Pat*_*pel 12 objective-c core-foundation ios automatic-ref-counting
(Xcode 4.2,iOS 5,ARC)
我有一些Core Foundation(/ Graphics)对象的属性应该取得对象的所有权.现在在这些Apple文档中我发现了这个:
在OS X v10.6及更高版本中,您可以使用__attribute__关键字指定应将Core Foundation属性视为用于内存管理的Objective-C对象:
@property(retain) __attribute__((NSObject)) CFDictionaryRef myDictionary;
不幸的是我找不到任何详细说明.我正在使用这个:
@property (nonatomic, strong) __attribute__((NSObject)) CGImageRef loupeImage;
它看起来像我期望的那样工作.它保留了设置属性的对象,并在将属性设置为nil时将其释放.
现在我的问题是,我还需要在dealloc中将这些属性显式设置为nil吗?
Lil*_*ard 15
编辑:我之前的帖子不正确.__attribute__((NSObject))在属性上只使它在使用属性访问器时保留/释放属性.它不会影响对ivar的访问,值得注意的是,它不会删除(或释放)该属性dealloc.所以,是的,在dealloc你的要么self.loupeImage = nil;你需要说或你需要说[_loupeImage release].
原帖:
如果编译器接受该strong关键字,那么它将正确处理它,保留并按预期释放,并在ARC中自动终止.整个想法__attribute__((NSObject))是它告诉编译器将这个对象完全视为obj-c对象,这就是它的作用.
所以不,你不应该在dealloc中明确地将它们取出来.您将自动获得nilling/release的默认ARC行为.
| 归档时间: | 
 | 
| 查看次数: | 2607 次 | 
| 最近记录: |