Objective-C 垃圾回收器到底回收什么?比如说,如果我在 Objective-C 2.0 中编写程序,并且使用一些普通的 C 结构体,那么我的代码是否需要手动释放该内存?
Objective-C 垃圾回收器到底回收什么?比如说,如果我在 Objective-C 2.0 中编写程序,并且使用一些普通的 C 结构体,那么我的代码是否需要手动释放该内存?
NSAllocateCollectable
或NSReallocateCollectable
函数分配堆内存,或者通过NSMakeCollectable
等API将CoreFoundation对象显式地交给垃圾回收器,否则GC将不知道您的内存,并且无法为您进行管理。相反,当启用GC时,使用+alloc
/-init
创建的Objective-C对象将由GC进行管理,除非您使用相应的API调用明确告诉它不要这样做。malloc()
在堆上分配一个结构体,那么我真的怀疑它(man页面没有提到任何关于它的内容,但是苹果可能为ObjC2运行时重写了malloc
)。如果你使用 NSAllocateCollectable()
,那么是的。