と の両方が可変配列array[index]
で動作することに気付きました。[array objectAtIndex:index]
誰かがそれらの違いを説明できますか? パフォーマンスの観点から、どれがベストプラクティスですか?
3 に答える
なし。これは、 2 ~ 3 年前に追加された、objective-c リテラルの clang 拡張機能の一部です。
また:
配列スタイルの添え字
添字オペランドが整数型の場合、要素が読み取られるか書き込まれるかに応じて、2 つの異なるセレクターのいずれかを使用するように式が書き換えられます。次の例のように、式が整数インデックスを使用して要素を読み取る場合:
NSUInteger idx = ...; id value = object[idx];
への呼び出しに変換されます。
objectAtIndexedSubscript:
id value = [object objectAtIndexedSubscript:idx];
式が整数インデックスを使用して要素を書き込む場合:
object[idx] = newValue;
への呼び出しに変換されます。
setObject:atIndexedSubscript:
[object setObject:newValue atIndexedSubscript:idx];
これらのメッセージ送信は、タイプチェックされ、明示的なメッセージ送信と同様に実行されます。に使用されるメソッド
objectAtIndexedSubscript:
は、整数型の引数と何らかの Objective-C オブジェクト ポインター型の戻り値で宣言する必要があります。に使用されるメソッドはsetObject:atIndexedSubscript:
、Objective-C ポインター型を持つ最初の引数と整数型を持つ 2 番目の引数で宣言する必要があります。
Xcode 4.4 より前は、objectAtIndex: が配列要素にアクセスする標準的な方法でした。今では、角かっこの添字構文でもアクセスできます。