5

と の両方が可変配列array[index]で動作することに気付きました。[array objectAtIndex:index]誰かがそれらの違いを説明できますか? パフォーマンスの観点から、どれがベストプラクティスですか?

4

3 に答える 3

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 番目の引数で宣言する必要があります。

于 2015-03-28T15:55:46.657 に答える
0

Xcode 4.4 より前は、objectAtIndex: が配列要素にアクセスする標準的な方法でした。今では、角かっこの添字構文でもアクセスできます。

于 2015-03-28T15:57:59.120 に答える