2014-02-18 162 views

回答

3

+initialize可以被覆盖(这是可选)执行类范围内的初始化。 -init执行类的单个实例的初始化,虽然它通常由在从NSObject的派生类添加参数精制(例如:的UIView的initWithFrame:方法)。

由于-init初始化的单个实例(具体地,它可以访问的实例的变量),它不能是一个类的方法。

1

从文档:

运行时发送刚刚类,或从它继承的任何类之前初始化到程序中的每个类,从程序中发送它的第一个消息。

这意味着,在第一次发送一个消息到类,无论是alloc或一些定义的类的方法,initialize首先被调用一次,对于应用程序的整个运行。相对于load,有可能包括在项目中的一类,不能击打initialize

init,在另一方面,是

由子类实现以用于已分配的内存之后立即初始化一个新的对象(接收器)。

含义,init纯属用于初始化类实例

编辑 -

继编辑的问题,alloc创建实例,同时init初始化它,这就是为什么alloc是一个类的方法和init是一个实例方法。

相关问题