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];
}
我有一个 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];
}