Ros*_*ews 9 c struct garbage-collection memory-management objective-c
Objective-C垃圾收集器究竟收集了什么?例如,如果我在Objective-C 2.0中编写程序,并且使用一些普通的C结构,我的代码是否需要担心手动释放该内存?
Qui*_*lor 12
对于堆内存,默认情况下你是独立的.除非您使用NSAllocateCollectable或者NSReallocateCollectable通过类似的API将CoreFoundation对象分配给垃圾收集器NSMakeCollectable,否则GC不知道您的内存,也不会为您管理它.相反,当启用GC时,使用+alloc/ 创建的Objective-C对象-init由GC管理,除非您通过补充API调用明确告知它.
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/GarbageCollection/
如果你用来malloc()在堆上分配一个结构,那么我真的很怀疑它(该手册页没有提到它的任何内容,但Apple可能会malloc为ObjC2运行时重写).如果你使用NSAllocateCollectable(),那么是的.
如果结构是在堆栈上创建的,那么就不需要收集,因为一旦帧退出就会被销毁.