我看过一些 WWDC 视频并注意到他们使用其他东西而不是 (id) 返回类型的未知对象。
但不幸的是,我忘记了关键字。
谁能告诉我为什么在返回某个对象时使用新事物而不是“id”?特别是在 init 和 class 方法中?
我看过一些 WWDC 视频并注意到他们使用其他东西而不是 (id) 返回类型的未知对象。
但不幸的是,我忘记了关键字。
谁能告诉我为什么在返回某个对象时使用新事物而不是“id”?特别是在 init 和 class 方法中?
你有机会寻找instancetype
吗?
(id)
告诉编译器期望任何类型的对象。这对于您真的不知道会返回什么的方法是有意义的,例如NSArray
's -(id)objectAtIndex:
。但是,在init
方法中,您知道将返回什么:对象类的实例或其子类。例如,[[NSArray alloc] init]
永远不会返回一个UIButton
.
通过提供instancetype
而不是id
告诉编译器期望什么样的对象。这意味着编译器可以帮助您防止错误。
请参阅此链接: http: //nshipster.com/instancetype/。它会告诉你所有你需要知道的。