我正在使用自动垃圾收集在我的Cocoa应用程序上运行Analyze并收到以下错误消息:
Potential leak (when using garbage collection) of an object allocated on line 1243
这就是第1243行:
self.positiveValueColor = CGColorCreateGenericRGB(0.0, 0.0, 1.0, 1.0);
以下是self.positiveValueColor属性的定义:
@property (assign) CGColorRef positiveValueColor
分析器稍后会在下面的方法中报告错误。 “double largestValue = 0.0”是出现错误的地方,即使它引用了第1243行:
以下是整个参考方法:
- (void) setDefaultColors {
if (self.positiveValueColor == nil) {
self.positiveValueColor = CGColorCreateGenericRGB(0.0, 0.0, 1.0, 1.0);
}
if (self.negativeValueColor == nil) {
self.negativeValueColor = CGColorCreateGenericRGB(1.0, 0.0, 0.0, 1.0);
}
if (self.zeroValueColor == nil) {
self.zeroValueColor = CGColorGetConstantColor(kCGColorBlack);
}
}
- (BOOL) largestValueIsPositive {
double largestValue = 0.0;
if (self.pv != nil) {
double value = [self.pv doubleValue];
if (fabs(value) > fabs(largestValue)) {
largestValue = value;
}
}
... // method continues on
为什么我得到分析错误?
- 编辑 -
谢谢,查克!那很有效。以下是我用以下内容替换相关行:
self.positiveValueColor = (CGColorRef)CFMakeCollectable(CGColorCreateGenericRGB(0.0, 0.0, 1.0, 1.0));
答案 0 :(得分:2)
CGColorRefs通常不符合垃圾回收的条件。你应该使用CFMakeCollectable()。这就是它的警告。