Cocoa touch 为什么-init是实例方法而+;初始化类方法?
在Cocoa中,对于Cocoa touch 为什么-init是实例方法而+;初始化类方法?,cocoa-touch,cocoa,initialization,nsobject,Cocoa Touch,Cocoa,Initialization,Nsobject,在Cocoa中,对于NSObjects,init和initialize不应该都是类方法吗?+initialize可以被重写(这是可选的)以执行类范围的初始化。 -init执行类的单个实例的初始化,尽管它通常通过在从NSObject派生的类中添加参数(例如:UIView的initWithFrame:方法)来优化 由于-init初始化单个实例(特别是它可以访问实例的变量),因此它不能是类方法。+initialize可以被重写(可选)以执行类范围的初始化。 -init执行类的单个实例的初始化,尽管它通
NSObject
s,init
和initialize
不应该都是类方法吗?+initialize
可以被重写(这是可选的)以执行类范围的初始化。
-init
执行类的单个实例的初始化,尽管它通常通过在从NSObject派生的类中添加参数(例如:UIView的initWithFrame:
方法)来优化
由于
-init
初始化单个实例(特别是它可以访问实例的变量),因此它不能是类方法。+initialize
可以被重写(可选)以执行类范围的初始化。
-init
执行类的单个实例的初始化,尽管它通常通过在从NSObject派生的类中添加参数(例如:UIView的initWithFrame:
方法)来优化
由于-init
初始化单个实例(特别是它可以访问实例的变量),因此它不能是类方法。来自文档:
运行时在类或从其继承的任何类从程序中发送其第一条消息之前,向程序中的每个类发送initialize
这意味着第一次向类发送消息时,无论是alloc
还是某个已定义的类方法,initialize
都会在整个应用程序运行过程中首先调用一次。与load
相反,可以在项目中包含一个类,并且永远不会点击initialize
另一方面,init
由子类实现,以便在分配新对象(接收器)的内存后立即初始化该对象
这意味着,init
通常用于初始化类实例
编辑--
在编辑的问题之后,alloc
创建实例,而init
初始化实例,这就是为什么alloc
是类方法,init
是实例方法。来自文档:
运行时在类或从其继承的任何类从程序中发送其第一条消息之前,向程序中的每个类发送initialize
这意味着第一次向类发送消息时,无论是alloc
还是某个已定义的类方法,initialize
都会在整个应用程序运行过程中首先调用一次。与load
相反,可以在项目中包含一个类,并且永远不会点击initialize
另一方面,init
由子类实现,以便在分配新对象(接收器)的内存后立即初始化该对象
这意味着,init
通常用于初始化类实例
编辑--
在编辑的问题之后,alloc
创建实例,而init
初始化实例,这就是为什么alloc
是类方法,init
是实例方法