Почему Clang жалуется на все мои автоматически выпускаемые объекты?
-
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 не сообщает о такой проблеме.Кажется, это был временный регресс.
Не связан с StackOverflow