Android開発者がiOS開発を始める時にあると便利かもしれないAPI対応表。
もちろん完全に一致はしないです。似たような役割ということで...
本当に初めての人向けです。逆方向(iOSからAndroid)でもある程度いけると思います。
言語の基本
内容(Java用語) | Java | ObjC |
---|---|---|
32bit整数 | int | int(long), int32_t |
64bit整数 | long | long long, int64_t |
真偽値 | boolean, true/false | BOOL YES/NO |
自分自身 | this | self |
空ポインタ | null | nil |
文字列 | "Hello" | @"Hello" (※1) |
---------- | ----------- | ------------ |
メソッド宣言 | bool funcName(int value) | - (BOOL) funcName:(int)value |
staticメソッド | static int staticFunc(String value) | + (int) staticFunc:(NSString *)value |
メソッド呼び出し | object.fuction(parameter) | [object function:parameter] |
クラス宣言 | class MyClass {} | @interface MyClass |
クラス実装 | (宣言と同じ) | @implementation MyClass |
インターフェイス宣言 | interface MyInterface | @protocol MyInterface |
インターフェイス実装 | class MyClass implements MyInterface | @interface MyClass<MyInterface> |
引数にインターフェイス | void func(MyInterface obj) | - (void) func:(id<MyInterface>)obj |
---------- | ----------- | ------------ |
foreach | for (Object o : array) | for (id object in array) |
ログ出力 | System.out.println("DEBUG:" + string) | NSLog(@"DEBUG:%@", string) (※2) |
※1: ""はchar[]、@""はNSString*。ほとんどの場合後者を使う
※2: %@はNSString*, %sがchar*、%dがint、%qiがlong long
よく使うクラス
内容(Java用語) | Java | ObjC |
---|---|---|
文字列 | String | NSString |
可変文字列 | StringBuilder | NSMutableString |
文字列連結 | str1 + str2 | [NSString stringWithFormat:@"%@%@", str1, str2] |
リスト(配列) | ArrayList | NSArray(不変), NSMutableArray(可変) |
要素追加 | list.add(obj) | [array addObject:obj] |
要素取得 | list.get(index) | [array objectAtIndex:index] (※1) |
要素数 | list.size(), array.length | [array count] |
マップ | Map | NSDictionary, NSMutableDictionary |
要素追加 | map.put(key, value) | [dict setObject:value forKey:key] (※2) |
要素取得 | map.get(key) | [dict objectForKey:key] (※3) |
※1 array[index] でもアクセス可能
※2 keyとvalueの順番が逆なので要注意。dict[key]=valueで設定可能
※3 dict[key]で取得も可能。
View関係
Android | iOS |
---|---|
Activity(Fragment) | UIViewController |
View | UIView |
View.OnClickListener | 該当なし。view addTarget: action: forControlEvents が同等の役割 |
ImageView | UIImageVIew |
TextView | UILabel |
Button | UIButton |
EditText | UITextField, UITextBox |
Bitmap(Drawableに近い役割でもある) | UIImage |
ListView | UITableView |
Adapter | UITableViewDataSource |
AdapterView.OnXXXClickListener | UITableViewDelegate |
その他
一般にゲッタメソッドにはgetを付けません
obj.getValue() が、 [obj value] になります。
もっともプロパティ宣言されていることがおおく、 obj.value でいけることも。
ジェネリクスの概念はないです
ガマンしましょう...いい方法をご存じの方は教えてください...
NSArray<NSString>とかすごいやりたいのですが..
ObjCでprivateなプロパティ、メソッドを宣言する方法
.mファイルに
@interface MyClass()
@property (nonatomic) NSString *privateStringVar;
- (void) privateMethod;
@end
@implementation MyClass
///
@end
とかく。
定数の宣言方法
3種類紹介します。他にもいろいろあると思います。
(1)#define。同一のものが宣言されてたら上書きされてしまうため非推奨。でも楽なので自分は小規模実験アプリではやってます。
#define MY_VALUE @"value"
(2)privateな定数なら.mにstatic const。よくkを先頭につける
static NSString *const kMyValue= @"COSNT";
(3)グローバルな定数ならextern const。他とかぶるとビルドエラー。かぶらないようクラス名を先頭に。
//MyClass.h
extern const NSString *MyClassValue;
//MyClass.m
const NSString *MyClassValue = @"Value";