我试图找到 Objective C 中 init 和构造函数之间的区别。我不是 C 开发人员,但我需要将一些 Objective C 代码转换为 Java,实际上我无法理解两者之间的区别事情。
最佳答案
在 Objective-C 中,对象的生成方式分为两部分:分配和初始化。
首先为对象分配内存,该对象会用零填充(除了一些您不需要关心的 Objective-C 内部内容):
myUninitializedObjectPointer = [MyClass alloc];
下一阶段是初始化。按照惯例,这是通过以 init
开头的方法来完成的。由于各种原因(尤其是在使用 ARC 时),您应该遵守此约定,但从语言的角度来看没有必要。
myObjectPointer = [myUnitializedObjectPointer init];
或一行:
myObjectPointer = [[MyClass alloc] init];
在其他语言中,这些 init
方法称为构造函数,但在 Objective-C 中,并不强制要求在分配对象时调用“构造函数”。您有责任调用适当的 init
方法。在 C++、C# 和 Java 等语言中,分配和初始化紧密耦合,以至于您无法在不初始化对象的情况下分配对象。
简而言之:init
方法可以被视为构造函数,但仅通过命名约定而不是语言强制执行。对于 Objective-C 来说,它们只是普通的方法。
关于objective-c - Objective C - init 和构造函数之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23878253/