initialize和init区别】的更多相关文章

Objective-C很有趣的一个地方是,它非常非常像C.实际上,它就是C语言加上一些其他扩展和一个运行时间(runtime). 有了这个在每个Objective-C程序中都会起作用的附加运行时间,给了它一些动态的特性.C和C++没有运行时间,他们仅仅被编译为完全按照代码的顺序去执行,不多也不少.Objective-C中带有运行时间的好处是,它可以在你的程序运行的流程中进行参与.在Objective-C中,它包括检查是否一个对象可以处理特定的消息,如果不能处理,它就帮助你自动调用其他特定的方法去…
initialize不是init initialize在这个类第一次被调用的时候比如[[class alloc]init]会调用一次initialize方法,不管创建多少次这个类,都只会调用一次这个方法,我们用它来初始化静态变量,而init方法是只要这个类被调用,就会调用这个init方法,这个类被调用几次,这个init方法就会被调用几次,当有一个类继承这个类,是这个类的子类的时候,当子类被调用的时候比如子类被[[class alloc]init]的时候,父类的initialize和init方法都…
在程序运行过程中,创建多个类对象,只会调用一次initialize  [ɪˈnɪʃəˌlaɪz] .而创建几个类对象就会调用几次init; 创建一个类aa,分别重写 initialize和init方法 #import "aa.h" @implementation aa + (void)initialize{ NSLog(@"%s",__func__); } - (instancetype)init{ self = [super init]; if (self) {…
Objective-C很有趣的一个地方是,它非常非常像C.实际上,它就是C语言加上一些其他扩展和一个运行时间(runtime). 有了这个在每个Objective-C程序中都会起作用的附加运行时间,给了它一些动态的特性.C和C++没有运行时间,他们仅仅被编译为完全按照代码的顺序去执行,不多也不少.Objective-C中带有运行时间的好处是,它可以在你的程序运行的流程中进行参与.在Objective-C中,它包括检查是否一个对象可以处理特定的消息,如果不能处理,它就帮助你自动调用其他特定的方法去…
Objective-C很有趣的一个地方是,它非常非常像C.实际上,它就是C语言加上一些其他扩展和一个运行时间(runtime). 有了这个在每个Objective-C程序中都会起作用的附加运行时间,给了它一些动态的特性.C和C++没有运行时间,他们仅仅被编译为完全按照代码的顺序去执行,不多也不少.Objective-C中带有运行时间的好处是,它可以在你的程序运行的流程中进行参与.在Objective-C中,它包括检查是否一个对象可以处理特定的消息,如果不能处理,它就帮助你自动调用其他特定的方法去…
initialize 是类方法,创建实例时会调用该方法.但是只会调用一次.如一个类创建了10个对象,initialize方法只会调用一次,但是init会调用10次.init 是实例方法,每次创建一个实例都会调用.调用在initialize之后.如果当前类没有实现initialize 方法,则系统会调用其父类的initialize 方法.已经有点晚了,就不贴代码介绍了.…
在NSObject.h中找到三个方法 + (void)load; + (void)initialize; - (instancetype)init 1. 可知三个方法类型,两个类方法,一个对象方法 2.load和initialize的区别 + (void)load: 程序运行时候会把相关的类都加载,但此时仅仅是将类加载到内存,程序实际运行的时候可能还没用到这类 (程序时按一定顺序,在后面的类还没用到,就不回使用相关类)     +load 方法会被默认执行,并且是在 main 函数之前执行的.…
1.init 与initialize 对于iOS程序,创建几个类对象,就会调用几次init.下面分别重写 举例如下: 创建一个Person类,分别重写initialize和init方法 #import "Person.h" @implementation Person +(void)initialize {  NSLog(@"%s", __FUNCTION__);   } -(instancetype)init { NSLog(@"%s", __…
可能有些还不清楚load和initialize的区别,下面简单说一下: 首先说一下 + initialize 方法:苹果官方对这个方法有这样的一段描述:这个方法会在 第一次初始化这个类之前 被调用,我们用它来初始化静态变量. initialize方法的调用时机,当向该类发送第一个消息(一般是类消息首先调用,常见的是alloc)的时候,先调用类中的,再调用类别中的(类别中如果有重写):如果该类只是引用,没有调用,则不会执行initialize方法.两者方法的共同点:自动调用父类的,不需要super…
背景说明,new是较为老式的写法,后来发现只有一个new不好使,才引入了alloc和init这种写 法,保留new一是向后兼容,二是很多时候是一种更简单的写法.其实是一样的,new在内部调用 的alloc和init. 源代码: + new {     ); //申请空间     Class metaClass = self->isa;     Class metaClass = self->isa;     return [newObject init];     //初始化     else…