Предупреждения XCode Analyzer без подробностей / номеров строк - PullRequest
0 голосов
/ 29 апреля 2011

Я запустил анализатор и нашел несколько предупреждений, которые я не могу связать со строками в коде.Я не уверен, как справиться с ними.Нажатие на них приводит меня к нужному файлу в редакторе, но сводные результаты анализатора говорят мне об этом.Я не знаю, на что ссылается каждый из них, и построчный просмотр кода непродуктивен (я не знаю, что я ищу).

Object with +0 retain counts returned to caller where a +1 (owning) retain count is expected

Incorrect decrement of the reference count of an object that is not owned at this point by the caller

Object with +0 retain counts returned to caller where a +1 (owning) retain count is expected

Object sent -autorelease too many times

Дляпоследнее предупреждение, я удалил авто-релиз, и он ушел, но я не знаю, как его разблокировать, поскольку он используется в операторе возврата.

- (Client*) createNewClient {
...
    Client *client = [NSEntityDescription insertNewObjectForEntityForName:@"Client"inManagedObjectContext:dataInterface.managedObjectContext];        
...
    return client;
}

Что мне делать с ними, вгенеральный?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2011

это может быть помечено для соглашений об именах. если вы хотите вернуть автоматически освобожденный объект, попробуйте переименовать его в:

- (Client *)clientWithCurrentContext
0 голосов
/ 29 апреля 2011

Поскольку вы не являетесь владельцем объекта, возвращаемого insertNewObjectForEntityForName:, вам не нужно его освобождать.

Из Руководства по программированию Apple Memory Management :

Вы вступаете во владение объектом, если создаете его с помощью метода, имя которого начинается с «alloc»,«New», «copy» или «mutableCopy» (например, alloc, newObject или mutableCopy), или если вы отправите ему сообщение сохранения.

insertNewObjectForEntityForName: содержит «New»,но не начинается с этого.

...