Почему Clang жалуется на все мои автоматически выпущенные объекты? - PullRequest
3 голосов
/ 10 мая 2009

У меня есть следующая функция:

- (NSString *)urlEncodedValue {
NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(
                   kCFAllocatorDefault, 
                   (CFStringRef)self, 
                   NULL, 
                   CFSTR("?=&+/\r\n"), 
                   kCFStringEncodingUTF8
);

return [result autorelease];

}

Почему Кланг дает мне следующие жалобы?

  • 1 Вызов функции 'CFURLCreateStringByAddingPercentEscapes' возвращает базовый базовый объект со счетом удержания +1 (ссылка на владельца)
  • 2 Объект отправлен -авторское сообщение
  • 3 Объект, возвращаемый вызывающей стороне в качестве собственной ссылки (счетчик сохраняемых данных передается вызывающей стороне)
  • 4 Слишком автоматическое освобождение объекта: объект отправлен -autorelease, но объект имеет ноль (видимый локально) счетчиков сохранения

Насколько мне известно, это соответствует рекомендациям Apple относительно управления памятью и владения объектами. Должен ли я явно освободить объект? Эта ошибка возникала в моем проекте 19 раз, и все при схожих обстоятельствах. Что я делаю не так?

1 Ответ

3 голосов
/ 14 мая 2009

Я нашел ответ на свой вопрос, разместив его здесь, если кто-то еще наткнется на проблему. Я использовал checker-0.198, checker-0.204 не сообщает о такой проблеме. Кажется, это была временная регрессия.

...