Статический анализатор Xcode 4 помечает этот метод как имеющий возвращаемое возвращаемое значение, если это не так.
- (id)copyWithZone:(NSZone *)zone
{
return [[[self class] allocWithZone:zone] initWithURL:self.url postString:self.postString];
}
Есть стрелка, указывающая от ключевого слова return на выражение, следующее за ним, а другая от этого выражения на предупреждение анализатора. Вот статический анализ:
- Метод возвращает объект Objective-C со счетом удержания +1
- Объект отправлен - сообщение об ошибке
- Объект, возвращаемый вызывающей стороне в качестве собственной ссылки (счетчик сохраняемых данных передается вызывающей стороне)
- Объект, возвращаемый вызывающей стороне с сохранением +0 (не владеющим)
- Объект с +0 счетами удержания возвращается вызывающей стороне, где ожидается +1 (счет владения), сохраняющий счет
Статический анализатор неверен или что-то не так с этим кодом?
<ч />
По запросу, метод -initWithURL:postString:
:
- (id)initWithURL:(NSURL *)u postString:(NSString *)p
{
if ( (self = [super init]) )
{
self.url = u;
self.postString = p;
}
return self;
}
<ч />
Я продолжаю получать это предупреждение даже после очистки и перестройки проекта.
ОБНОВЛЕНИЕ: Статический анализатор Xcode больше не помечает это как проблему после обновления до Xcode 4.2.