WWDC のビデオをいくつか見ましたが、不明なオブジェクトの (id) 戻り型の代わりに別のものを使用していることに気付きました。
しかし、残念ながらキーワードを忘れていました。
オブジェクトを返すときに「id」の代わりに新しいものを使用する理由を誰か教えてもらえますか? 特にinitメソッドとクラスメソッドで?
WWDC のビデオをいくつか見ましたが、不明なオブジェクトの (id) 戻り型の代わりに別のものを使用していることに気付きました。
しかし、残念ながらキーワードを忘れていました。
オブジェクトを返すときに「id」の代わりに新しいものを使用する理由を誰か教えてもらえますか? 特にinitメソッドとクラスメソッドで?
ひょっとしてお探しinstancetype
ですか?
(id)
あらゆる種類のオブジェクトを期待するようにコンパイラに指示します。NSArray
これは、たとえばの のように、何が返されるか正直にわからないメソッドの場合に理にかなっています-(id)objectAtIndex:
。ただし、init
メソッドでは、返されるものがわかっています: オブジェクトのクラスのインスタンスまたはそのサブクラスです。たとえば、[[NSArray alloc] init]
は決して返されませんUIButton
。
instancetype
代わりに提供することでid
、期待するオブジェクトの種類をコンパイラに伝えます。これは、コンパイラがエラーの防止に役立つことを意味します。
このリンクを参照してください: http://nshipster.com/instancetype/ . それはあなたが知る必要があるすべてを教えてくれます。