0

これらの行はどういう意味ですか?

   for(ContactInfo *item in fullContactsArray) {
        if(item->contactId || item->listId)
            [contactsArray addObject:item];
    }

->特に意味が知りたいです。助けてください。

4

2 に答える 2

3

構造ベースのデータ型へのポインターを操作する場合、特別な参照解除構文を使用すると、ポインターを参照し、構造内の特定のフィールドに 1 つの手順でアクセスできます。これを行うには、以下に示すように -> 演算子を使用します。

struct box * p = ...; 
p->width = 20; 

2 行目に示されている -> 演算子は、ポインター p を逆参照してから、構造体内の width フィールドにアクセスします。ポインターをたどって、ポインターが指す値を読み取ったり変更したりするときに、2 つのポインターを比較して、同じ値を指しているかどうかを確認することも役立つ場合があります。

Objective-C のポインタ

于 2013-04-19T03:22:30.667 に答える
2

演算子は->、C または C++ と同じように機能します...item->contactIdは と同じ(*item).contactIdです。(この場合のドットは、プロパティ アクセス演算子ではなく、メンバー アクセス演算子です。)

  • ループは、Objective-C コンテナーによる高速反復のfor例です。単純に、配列内のすべてのオブジェクトを調べfullContactsArray、各オブジェクトを順番にループ変数に割り当てますitem

  • itemは type のオブジェクトへのポインターでありContactInfo、ループを通過するたびに異なるオブジェクトを指します。このifステートメントは、演算子を使用しておよびインスタンス変数->の値をチェックします。contactIdlistId

  • これらの変数のいずれかがゼロでない場合、 をitem指すオブジェクトが に追加されcontactsArrayます。

->特に最近では、オブジェクト変数への直接アクセスよりもプロパティやプロパティ アクセサーの方が好まれることが多いため、Objective-C コードでこれを目にするのは少し珍しいことです。

于 2013-04-19T03:31:35.363 に答える