OC init 方法学习

2020-04-01  本文已影响0人  EngineerPan
- (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。

上一篇 下一篇

猜你喜欢

热点阅读