Objective-C:init vs initialize

时间:2011-05-31 17:52:06

标签: objective-c initialization init initializer

在Objective-C中,init方法(即类的指定初始值设定项)和initialize方法之间有什么区别?应该在每个中放入什么初始化代码?

2 个答案:

答案 0 :(得分:125)

-init是一个实例方法,用于初始化特定对象。 +initialize是一个类方法,在创建类的任何实例之前和运行其他类方法之前运行。 +initialize不是您在大多数时间使用的东西,但它可以方便地设置整个类可能使用的静态变量,或者在创建任何实例之前确保满足某些条件。

Implementing an InitializerThe Objective-C Programming Language部分详细介绍了-init方法中的代码。还有一些关于初始化类的讨论(即+initialize)以及为什么你可能需要在Class Objects部分的同一文档中执行此操作。进入+initialize的代码通常与要求您首先初始化它的类的特殊功能密切相关。在+initialize(以及任何类方法)中要记住的一件重要事情是,类方法中的self引用类本身,而不是类的实例。

答案 1 :(得分:17)

要为Java开发人员绘制并行,init就像一个构造函数,而initialize就像一个类上的静态块。