2

WWDC のビデオをいくつか見ましたが、不明なオブジェクトの (id) 戻り型の代わりに別のものを使用していることに気付きました。

しかし、残念ながらキーワードを忘れていました。
オブジェクトを返すときに「id」の代わりに新しいものを使用する理由を誰か教えてもらえますか? 特にinitメソッドとクラスメソッドで?

4

2 に答える 2

9

ひょっとしてお探しinstancetypeですか?

于 2013-07-12T10:01:12.320 に答える
2

(id)あらゆる種類のオブジェクトを期待するようにコンパイラに指示します。NSArrayこれは、たとえばの のように、何が返されるか正直にわからないメソッドの場合に理にかなっています-(id)objectAtIndex:。ただし、initメソッドでは、返されるものがわかっています: オブジェクトのクラスのインスタンスまたはそのサブクラスです。たとえば、[[NSArray alloc] init]は決して返されませんUIButton

instancetype代わりに提供することでid、期待するオブジェクトの種類をコンパイラに伝えます。これは、コンパイラがエラーの防止に役立つことを意味します。

このリンクを参照してください: http://nshipster.com/instancetype/ . それはあなたが知る必要があるすべてを教えてくれます。

于 2013-07-12T10:08:35.047 に答える