Objective-C 2.0垃圾收集是否收集C结构?

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/

  • 垃圾收集编程指南+1是我读过的最引人入胜的技术写作之一. (2认同)

Dav*_*ong 5

如果你用来malloc()在堆上分配一个结构,那么我真的很怀疑它(该手册页没有提到它的任何内容,但Apple可能会malloc为ObjC2运行时重写).如果你使用NSAllocateCollectable(),那么是的.

如果结构是在堆栈上创建的,那么就不需要收集,因为一旦帧退出就会被销毁.