Xcode 分析器抱怨存储在 "assign" @属性 中的 CFContextRef

Xcode analyzer complaining of CFContextRef stored in an "assign" @property

我有一个 Cocoa class 需要长时间保持位图上下文以进行像素操作。

@property (assign, nonatomic) CGContextRef cacheContext; // block of pixels

在我的 class 初始化中:

// this creates a 32bit ARGB context, fills it with the contents of a UIImage and returns a CGContextRef
[self setCacheContext:[self allocContextWithImage:[self someImage]]];

并在 dealloc 中:

CGContextRelease([self cacheContext]);

Xcode 分析器公司关于 init 泄漏 CGContextRef 类型的对象并且在 dealloc 中有关于 "incorrect decrement of an object that is not owned by the caller" 的投诉。

我相信这一切都很好并且运行完美。

我怎么能告诉Xcode这一切都很好而不是抱怨呢?

好的,鉴于这里的讨论是我认为可以解决分析器投诉的方法,让您保持正式 属性,并且不违反任何内存管理规则。

声明只读属性:

@property (readonly) CGContextRef cacheContext;

创建ivar时直接赋值

_cacheContext = [self allocContextWithImage:self.someImage];

dealloc发布:

- (void)dealloc
{
    CGContextRelease(_cacheContext);
    [super dealloc];
}