У меня есть метод, который возвращает CGPath
и генерирует предупреждения анализатора. Метод объявлен в протоколе. Здесь - это пример реализации, которая генерирует предупреждение:
«Возможная утечка объекта, выделенного в строке 47 и сохраненного в 'path'»:
- (CGPathRef)createPathForBounds:(CGRect)bounds key:(NSString *)key;
{
if ([key isEqualToString:OvalColumn])
{
CGPathRef path = CGPathCreateWithEllipseInRect(bounds, NULL);
return path;
}
return NULL;
}
Вот пример использования, которое генерирует предупреждение: «Неправильное уменьшение ссылки количество объектов, которые на данный момент не принадлежат вызывающему "
CGPathRef path = [self.delegate createPathForBounds:bounds key:someKey];
// Use the path to do some drawing
CGRelease(path);
Мое управление памятью правильное; я возвращаю сохраненный CGPath
из моего метода протокола и освобождаю его в вызывающий блок, поэтому я знаю, что предупреждения можно игнорировать, но я бы хотел полностью удалить их.
Не хватает ли мне соглашения об именах, которое порадует анализатор? Можно ли определять функции в протоколах? Как будет работать создание подклассов?