Базовые данные выдают предупреждения анализатора - PullRequest
3 голосов
/ 04 января 2011

Я делаю последние доработки приложения и избавляюсь от всех предупреждений компилятора / анализатора.

У меня есть куча методов Class, которые обертывают доступ моих приложений к сущностям Core Data.Это «провоцирует» анализатор.

+ (CDProductEntity*) newProductEntity {

    return (CDProductEntity*)[NSEntityDescription insertNewObjectForEntityForName:@"CDProductEntity" inManagedObjectContext:[self context]];
}

Что приводит к предупреждению анализатора:

Объект с +0 удерживающим счетчиком возвращается вызывающей стороне, где сохраняется +1 (владеющий)ожидается число

В методе, который вызывает вышеупомянутый метод класса, у меня есть это:

CDProductEntity *newEntity = [self newProductEntity];

Что приводит к предупреждению анализатора:

Метод возвращает объект Objective-C со счетом удержания +1 (ссылка на владельца)

Явное освобождение или автоматическое высвобождение объекта Core Data обычно очень и очень плохо, но это то, что он просит меня сделатьВот?Сначала он говорит мне, что у него + 0, и это плохо, затем он говорит, что у него +1, что тоже плохо.

Что я могу сделать, чтобы убедиться, что я имею дело с Анализатором?сбой или что я правильно отпустил?

заранее спасибо

1 Ответ

6 голосов
/ 04 января 2011

Проблема, на которую жалуется статический анализатор, может быть связана с именем вашего метода - согласно соглашениям об именах obj-c методы с alloc, new или copy в их именах должны возвращать объекты, которые вызывающая сторона «владеет» и должна выпустить - и ваш метод возвращаетобъект автозапуска.

цитата из документы :

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

Так что для начала попробую предложить просто удалить «new»'от вашего имени метода

...