【发布时间】:2010-09-21 01:32:23
【问题描述】:
我已经在无指针、垃圾收集的编程语言的世界中变得非常自在。现在我必须编写一个小的 Mac 组件。我一直在学习 Objective-C,但是当我面临悬空指针的可能性和管理保留计数的需要时,我感到很沮丧。
我知道 Objective-C 现在有垃圾回收功能,但这只适用于 Leopard。我的组件也必须与 Tiger 一起使用。
我需要访问一些 Java 不可用的 Cocoa 库,因此排除了我通常选择的武器。
我有哪些选择?尤其是没有显式指针和自动垃圾回收。
【问题讨论】:
-
Objective-C 2.0 确实有垃圾回收功能。
-
他说这也得和老虎一起工作。这排除了垃圾收集器。
-
Obj-C 没有垃圾收集实际上并不重要(总是)。它使用带有自动释放池的引用计数系统。正确标记 OBj-C 类变量意味着将添加必要的代码来管理引用计数 - 您不需要使用 AppKit 在 Objective-C 中显式管理引用计数。
-
@Chris,这仅在 Objective-C 2.0 中是正确的,它仅是 Leopard 及更高版本。在 Objective-C 1.0 中,您必须创建自己的访问器方法,包括在 -dealloc 中管理保留/复制/分配和释放。这并不意味着它实际上要困难得多,但您必须做的不仅仅是“正确标记类变量”。
标签: objective-c cocoa macos