これらの行はどういう意味ですか?
for(ContactInfo *item in fullContactsArray) {
if(item->contactId || item->listId)
[contactsArray addObject:item];
}
->
特に意味が知りたいです。助けてください。
これらの行はどういう意味ですか?
for(ContactInfo *item in fullContactsArray) {
if(item->contactId || item->listId)
[contactsArray addObject:item];
}
->
特に意味が知りたいです。助けてください。
構造ベースのデータ型へのポインターを操作する場合、特別な参照解除構文を使用すると、ポインターを参照し、構造内の特定のフィールドに 1 つの手順でアクセスできます。これを行うには、以下に示すように -> 演算子を使用します。
struct box * p = ...;
p->width = 20;
2 行目に示されている -> 演算子は、ポインター p を逆参照してから、構造体内の width フィールドにアクセスします。ポインターをたどって、ポインターが指す値を読み取ったり変更したりするときに、2 つのポインターを比較して、同じ値を指しているかどうかを確認することも役立つ場合があります。
演算子は->
、C または C++ と同じように機能します...item->contactId
は と同じ(*item).contactId
です。(この場合のドットは、プロパティ アクセス演算子ではなく、メンバー アクセス演算子です。)
ループは、Objective-C コンテナーによる高速反復のfor
例です。単純に、配列内のすべてのオブジェクトを調べfullContactsArray
、各オブジェクトを順番にループ変数に割り当てますitem
。
item
は type のオブジェクトへのポインターでありContactInfo
、ループを通過するたびに異なるオブジェクトを指します。このif
ステートメントは、演算子を使用しておよびインスタンス変数->
の値をチェックします。contactId
listId
これらの変数のいずれかがゼロでない場合、 をitem
指すオブジェクトが に追加されcontactsArray
ます。
->
特に最近では、オブジェクト変数への直接アクセスよりもプロパティやプロパティ アクセサーの方が好まれることが多いため、Objective-C コードでこれを目にするのは少し珍しいことです。