Android開発者がiOS開発を始めるときに便利かもなAPI対応表

  • 100
    Like
  • 0
    Comment
More than 1 year has passed since last update.

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ファイルに

MyClass.m
@interface MyClass()
@property (nonatomic) NSString *privateStringVar;
- (void) privateMethod;
@end

@implementation MyClass 
///
@end

とかく。

定数の宣言方法
3種類紹介します。他にもいろいろあると思います。
(1)#define。同一のものが宣言されてたら上書きされてしまうため非推奨。でも楽なので自分は小規模実験アプリではやってます。

Const.h
#define MY_VALUE @"value"  

(2)privateな定数なら.mにstatic const。よくkを先頭につける

Const.m
static NSString *const kMyValue= @"COSNT";

(3)グローバルな定数ならextern const。他とかぶるとビルドエラー。かぶらないようクラス名を先頭に。

//MyClass.h
extern const NSString *MyClassValue;

//MyClass.m
const NSString *MyClassValue = @"Value";