Потенциальная утечка (при использовании сборки мусора) - PullRequest
1 голос
/ 13 октября 2011

Я запускаю анализ на моем приложении Какао с автоматической сборкой мусора и получаю следующее сообщение об ошибке:

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

Впрочем, анализатор сообщает об ошибке позже, ниже в методе под ним."doublegestValue = 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));

1 Ответ

2 голосов
/ 13 октября 2011

CGColorRefs обычно не имеют права на сборку мусора. Вы должны использовать CFMakeCollectable (). Вот о чем это предупреждение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...