在Objective-C中,init
方法(即为类指定的初始化器)和initialize
方法之间有什么区别?每个中应放置什么初始化代码?
Answers:
-init
是一个实例方法,用于初始化特定对象。+initialize
是一个类方法,在创建该类的任何实例之前以及在运行其他类方法之前运行。+initialize
并不是您大部分时间都在使用的东西,但是它对于设置整个类可能使用的任何静态变量或确保在创建任何实例之前确保满足某些条件非常方便。
在Objective-C编程语言-init
的实现初始化程序部分中,对方法中属于的代码进行了详细描述。在类对象一节中,还讨论了初始化类(即)以及为什么可能需要在同一文档中进行初始化的问题。通常,进入的代码将与该类的特殊功能紧密联系在一起,而该类的特殊功能要求您首先对其进行初始化。在(以及任何类方法中)要记住的重要一件事是,在类方法中,引用的是类本身,而不是类的实例。+initialize
+initialize
+initialize
self
if (self == [NameOfClass class])
内部+initialize
方法,为什么我们需要检查一下?我知道这与+initialize
在父类上两次调用方法有关,但我不清楚。任何帮助表示赞赏!
+initialize
仅调用一次对于每个类,可能会多次调用一个实现-一次是针对其所在的类,一次是针对每个不提供其自身+initialize
方法的子类。
+initialize
方法)。实际上,您可以创建一个类的实例而无需发送该类消息(使用IMP
它的create-instance方法(通常,+allocWithZone:
但这可能有所不同))。