kch*_*kch 10 macos cocoa garbage-collection objective-c
对于我在Mac上的任何应用程序,有没有办法判断它是在启用GC的情况下编译的,还是在进行手动内存管理?
kch*_*kch 19
我在这里找到了答案.你要知道原来的职位是错误的,而是包含了评论由马克·罗,苹果的工程师,指向的方式.
我otool用当前的OS(10.6.4)重新运行他在我的机器上提到的命令.这是输出:
$ uname -a
Darwin meaningless.local 10.4.0 Darwin Kernel Version 10.4.0: Fri Apr 23 18:28:53 PDT 2010; root:xnu-1504.7.4~1/RELEASE_I386 i386
### Mail doesn't use GC
$ otool -oV /Applications/Mail.app/Contents/MacOS/Mail | tail -3
Contents of (__DATA,__objc_imageinfo) section
version 0
flags 0x0
### Xcode supports GC and retain/release
$ otool -oV /Developer/Applications/Xcode.app/Contents/MacOS/Xcode | tail -3
Contents of (__DATA,__objc_imageinfo) section
version 0
flags 0x2 OBJC_IMAGE_SUPPORTS_GC
这里感兴趣的领域是该
__image_info部分的"标志"字段__OBJC.如果支持垃圾收集,它将具有该值0×2并将显示为"GC RR"以表示支持垃圾收集和保留/释放.如果需要垃圾收集,那么该字段将具有该值0×4,并将显示为"仅GC",表示仅支持垃圾收集并且保留/释放不可用.该字段还可以包含其他值,但这两个值是与垃圾收集相关的唯一值.
| 归档时间: |
|
| 查看次数: |
1474 次 |
| 最近记录: |