我试图找到 Objective C 中 init 和构造函数之间的区别。我不是 C 开发人员,但我需要将一些 Objective C 代码转换为 Java,实际上我无法理解两者之间的区别。
在 Objective-C 中,对象的生成方式分为两部分:分配 and 初始化.
首先为对象分配内存,该对象会被零填充(除了一些您不需要关心的 Objective-C 内部内容):
myUninitializedObjectPointer = [MyClass alloc];
下一阶段是初始化。这是通过以下方法完成的init
按照惯例。由于各种原因(尤其是在使用 ARC 时),您应该遵守此约定,但从语言的角度来看没有必要。
myObjectPointer = [myUnitializedObjectPointer init];
或一行:
myObjectPointer = [[MyClass alloc] init];
在其他语言中这些init
方法被称为构造函数,但在 Objective-C 中,分配对象时并不强制调用“构造函数”。您有责任致电适当的部门init
方法。在 C++、C# 和 Java 等语言中,分配和初始化紧密耦合,以至于您无法在不初始化对象的情况下分配对象。
简而言之:init
方法可以被认为是构造函数,但只是通过命名约定而不是语言强制。对于 Objective-C 来说,它们只是普通的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)