当一个类执行new方法时,背后是先执行alloc方法,在执行init方法,然后返回一个已经初始化完成的该类的对象。下面简单介绍一下init的基础内容:
一、init执行的目的:
1.init执行是初始化对象的方法,同时给属性赋默认值。基本类型(int float double等)会初始化为0。C指针类型,会初始化为NULL,OC指针会初始化为nil。
2.init方法可以重写。重写init方法时,先调用[super init],执行父类初始化操作,父类初始化中包含了初始化isa指针等操作。由于内存空间问题,有可能会初始化失败。自定义初始化时,在此要加入判断,具体代码格式苹果官方文档有以下展示:
self = [super init];
if(self != nil){
初始化当前对象的操作;
}
return self;
3.可以根据对象的特性和编码的便捷性进行自定义init构造方法,该方法返回值必须为instancetype类型。构造方法的名称必须以initWith开头,系统会识别为初始化构造方法。with后面可以自定义带一些参数。
4.self只有在初始化构造方法init中可以写self = XXX,其它任何地方都不能给self赋值。
如果还有其它未补充的内容,欢迎留言补充,谢谢!