Статический анализатор Xcode и copyWithZone - PullRequest
7 голосов
/ 05 июня 2011

Статический анализатор Xcode 4 помечает этот метод как имеющий возвращаемое возвращаемое значение, если это не так.

- (id)copyWithZone:(NSZone *)zone
{
    return [[[self class] allocWithZone:zone] initWithURL:self.url postString:self.postString];
}

Есть стрелка, указывающая от ключевого слова return на выражение, следующее за ним, а другая от этого выражения на предупреждение анализатора. Вот статический анализ:

  1. Метод возвращает объект Objective-C со счетом удержания +1
  2. Объект отправлен - сообщение об ошибке
  3. Объект, возвращаемый вызывающей стороне в качестве собственной ссылки (счетчик сохраняемых данных передается вызывающей стороне)
  4. Объект, возвращаемый вызывающей стороне с сохранением +0 (не владеющим)
  5. Объект с +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.

1 Ответ

3 голосов
/ 20 июня 2011

Это ошибка в Xcode.Код в порядке.

...