Получил предупреждение "Неверное уменьшение счетчика ссылок объекта, который не принадлежит вызывающей стороне в этот момент" - PullRequest
0 голосов
/ 12 октября 2011

При 'Анализе' в этом сообщении появляется предупреждение "Неправильное уменьшение счетчика ссылок на объект, который в данный момент не принадлежит вызывающей стороне".(xCode 4.1 +)

Я могу понять, что лучше "убить" объект из соответствующего класса, но есть ли способ сделать это снаружи без предупреждения?

Спасибо!

NSLog(@"--[%s:%d]",__PRETTY_FUNCTION__, __LINE__);
myAppDelegate* appDelegate = [[UIApplication sharedApplication] delegate];
   if (appDelegate.referencesPopup != nil) {
        [appDelegate.referencesPopup release]; // warning
        appDelegate.referencesPopup = nil;  
   }      
}

Ответы [ 2 ]

2 голосов
/ 12 октября 2011

Просто установите свойство на nil, нет необходимости освобождать его здесь, как говорит анализатор. Если вы не сохранили его, не отпускайте его.

Кроме того, вы не должны вызывать release для чего-то, что возвращается получателем точечной нотации. Это подробно обсуждалось здесь: Почему я не должен использовать геттер для освобождения свойства в target-c?

0 голосов
/ 12 октября 2011

Скорее всего, тем способом, которым вы получаете объект, хранящийся в referencesPopup, вы не выделяли его сами или не сохраняли его.В этом случае вы не несете ответственности за его освобождение.Вы можете просто установить ivar на ноль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...