你的位置:首页 > 操作系统

[操作系统]initialize和init方法的区别与使用以及什么时候调用


initialize不是init
initialize在这个类第一次被调用的时候比如[[class alloc]init]会调用一次initialize方法,不管创建多少次这个类,都只会调用一次这个方法,而init方法是只要这个类被调用,就会调用这个init方法,这个类被调用几次,这个init方法就会被调用几次,当有一个类继承这个类,是这个类的子类的时候,当子类被调用的时候比如子类被[[class alloc]init]的时候,父类的initialize和init方法都会被调用一次,
init继承于NSObject这个根类,所有的子类可以不用重写这个实例方法函数,当然也可以在自己的类里重写init实例方法。
1 - (id) init
2 {
3 if ( self = [super init] )
4 {
5 // Class-specific initializations
6 }
7 return self;
8 }
首先得调用父类的init函数方法,然后在if的语句块里写一些自己特色的初始化操作(第5行)。
可以在你实例化的时候提供更多参数以便实现对对象的快速赋值。重写init可以让你创建的对象出来就是成品。而不重写的话,还需要你对该对象的属性进行赋值。