2

我看过一些 WWDC 视频并注意到他们使用其他东西而不是 (id) 返回类型的未知对象。

但不幸的是,我忘记了关键字。
谁能告诉我为什么在返回某个对象时使用新事物而不是“id”?特别是在 init 和 class 方法中?

4

2 回答 2

9

你有机会寻找instancetype吗?

于 2013-07-12T10:01:12.320 回答
2

(id)告诉编译器期望任何类型的对象。这对于您真的不知道会返回什么的方法是有意义的,例如NSArray's -(id)objectAtIndex:。但是,在init方法中,您知道将返回什么:对象类的实例或其子类。例如,[[NSArray alloc] init]永远不会返回一个UIButton.

通过提供instancetype而不是id告诉编译器期望什么样的对象。这意味着编译器可以帮助您防止错误。

请参阅此链接: http: //nshipster.com/instancetype/。它会告诉你所有你需要知道的。

于 2013-07-12T10:08:35.047 回答