Почему Clang жалуется на все мои автоматически выпускаемые объекты?

StackOverflow https://stackoverflow.com/questions/845080

  •  20-08-2019
  •  | 
  •  

Вопрос

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

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

return [result autorelease];

}

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

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

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

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top