Статический анализатор Xcode и copyWithZone

Статический анализатор 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.


person titaniumdecoy    schedule 05.06.2011    source источник
comment
Хм ... можешь также опубликовать свой метод initWithURL: postString:?   -  person spacehunt    schedule 05.06.2011
comment
@spacehunt: Я обновил вопрос.   -  person titaniumdecoy    schedule 06.06.2011
comment
@Jason: Я только что создал новый класс, используя только вышеперечисленное, и я не могу дублировать его с помощью Xcode 4.0.2. Какая стрелка выделяется при нажатии на 2. Анализ автозапуска отправленного объекта?   -  person spacehunt    schedule 06.06.2011
comment
@spacehunt: нажатие на стрелки ничего не делает. Я создал новый проект и добавил к нему файл .h / .m, и статический анализатор ничего не пометил. В результате я предполагаю, что это ошибка статического анализатора.   -  person titaniumdecoy    schedule 06.06.2011
comment
Как насчет скриншота стрелок и предупреждения. Часть этой истории должна быть упущена.   -  person Joshua Weinberg    schedule 12.06.2011
comment
стандартное упоминание Xcode - вы вышли и перезапустили его?   -  person bshirley    schedule 14.06.2011
comment
Кроме того, какая версия (именно) XCode у вас установлена ​​(и установлено ли несколько версий)?   -  person Scott Corscadden    schedule 16.06.2011
comment
Как выглядят ваши свойства url и postString?   -  person Morten Fast    schedule 16.06.2011
comment
Мог ли он на самом деле говорить о следующем или предыдущем методе в файле и просто запутался в местоположении?   -  person Becca Royal-Gordon    schedule 17.06.2011
comment
Спасибо всем за отзывы. Это больше не помечается как ошибка в Xcode 4.2, поэтому я предполагаю, что это была ошибка статического анализатора.   -  person titaniumdecoy    schedule 18.06.2011


Ответы (1)


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

person Cocoanetics    schedule 20.06.2011
comment
Кажется, это так, поскольку Xcode 4.2 больше не отмечает этот код как проблему. - person titaniumdecoy; 01.07.2011