4

私は本「Programming in Objective C」を読んでいますが、彼はid型についてあまり説明しておらず、あまり演習もしていませんでしidた。 ? (彼はそれに関するいくつかの問題を説明したので)

私はそれが使用されていると確信しています。それが唯一の解決策であるいくつかのケースに言及できれば素晴らしいと思います..ある種のアプリ開発からの実際のプログラミングケースのように。

4

3 に答える 3

4

idはObjectiveCのユニバーサルタイプです。これは、、*などの任意のObjective-Cタイプを表すことができます。Objective-Cの優れた点は、にメッセージを送信できることです。メッセージの場合、送信者が実際のタイプを知らなくても、通常どおり処理されます。NSString *NSArray *id

一般的なものを定義するときに一般的に使用されます。たとえば、NSArrayidsの配列です。NSNumber特定の種類のオブジェクト(たとえば、NSStringなど)をコンテナーに入れるのはプログラマーの責任です。これは、Objective-Cの他の多くの場所で使用されます(IBActionインターフェイスビルダーのを定義するとき、initメソッドを定義するときなど)。

于 2013-02-17T04:18:43.293 に答える
2

これidは、包括的なデータ型のようなものです。任意の型の値を保持するために使用されます。

一般的な用途は、init...メソッドの戻り値の型です。任意のオブジェクトを保持できるため、コレクション クラスで使用されます。さまざまな getter メソッドの戻り値と、可変バージョンのコレクション クラスでオブジェクトを追加/設定するためのさまざまなメソッドを参照してください。

また、任意のクラスであるがプロトコルに準拠する必要があるオブジェクトへの参照が必要な場合に、プロトコルと組み合わせて使用​​されます。例には、 などのデリゲート プロパティの多くが含まれますUITableView delegate

于 2013-02-17T04:19:21.383 に答える
2

id は、Objective-C の汎用オブジェクト型です。あらゆるオブジェクトを保持できます。

実際の例の 1 つ: ルート要素が配列であるか辞書であるかがわからない json の解析。しかし、 id はそれらの両方を取ります。

私はよく使用しますが、多くの場合、プロトコル定義と組み合わせて使用​​します: id<NetworkPrinterProtocol>. これは、あらゆる種類のオブジェクトである必要がありますが、NetworkPrinterProtocol を満たすことを意味します。デリゲートの定義によく使用されます。

WP: Objective-C — 動的型付けを参照してください

于 2013-02-17T04:19:35.840 に答える