在Objective-C中,init
方法(即类的指定初始值设定项)和initialize
方法之间有什么区别?应该在每个中放入什么初始化代码?
答案 0 :(得分:125)
-init
是一个实例方法,用于初始化特定对象。 +initialize
是一个类方法,在创建类的任何实例之前和运行其他类方法之前运行。 +initialize
不是您在大多数时间使用的东西,但它可以方便地设置整个类可能使用的静态变量,或者在创建任何实例之前确保满足某些条件。
在Implementing an Initializer的The Objective-C Programming Language部分详细介绍了-init
方法中的代码。还有一些关于初始化类的讨论(即+initialize
)以及为什么你可能需要在Class Objects部分的同一文档中执行此操作。进入+initialize
的代码通常与要求您首先初始化它的类的特殊功能密切相关。在+initialize
(以及任何类方法)中要记住的一件重要事情是,类方法中的self
引用类本身,而不是类的实例。
答案 1 :(得分:17)
要为Java开发人员绘制并行,init就像一个构造函数,而initialize就像一个类上的静态块。