- (instancetype)init;
- 由子类实现,以在为其分配内存后立即初始化新对象;
返回值
一个初始化的对象,如果由于某种原因而无法创建对象,则返回nil;
讨论区
初始化消息与同一行代码中的alloc(或allocWithZone :)消息耦合:
SomeClass *object = [[SomeClass alloc] init];
初始化之前,对象无法使用。
在此方法的自定义实现中,您必须调用super的Initialization,然后初始化并返回新对象。如果新对象无法初始化,则该方法应返回nil。例如,假设的BuiltInCamera类如果在没有相机的设备上运行,则可能从其init方法返回nil。
-(instancetype)init {
if(self = [super init]){
// 初始化自我
}
return self;
}
在某些情况下,init方法的自定义实现可能返回替代对象。因此,在后续代码中,您必须始终使用init返回的对象,而不是alloc或allocWithZone:返回的对象。
NSObject类中定义的init方法不初始化。它只是返回自我。就可空性而言,调用者可以假定init的NSObject实现不返回nil。
网友评论