Основные данные - управление памятью? - PullRequest
0 голосов
/ 19 января 2011
[myArray addObject:myObject];
[object release];

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

Это относится к NSManagedObjects? Потому что в приведенном выше коде, если myObject является экземпляром NSManagedObject, я получаю "EXC_BAD_ACCESS"

Ответы [ 3 ]

2 голосов
/ 19 января 2011

Пожалуйста, прочитайте Руководство по программированию управления памятью .Он ответит на этот вопрос и на любые вопросы по управлению памятью, которые у вас возникнут в будущем.

Чтобы прямо ответить на этот вопрос: вы должны release или autorelease принадлежащие вам объектыВы должны не release или autorelease объекты, которыми вы не владеете.Вы владеете объектом, когда вызываете retain или получаете объект, используя alloc / new / copy.

Конечно, не существует общего правила для releasing объекта, когда вы добавляете его в массив.

0 голосов
/ 19 января 2011

Посмотрите на код:

[myArray addObject:myObject];
[object release]; //!!!What is object?

Вы имели в виду?

[myArray addObject:myObject];
[myObject release];

И Руководство по программированию управления памятью какао необходимо прочитать. Если вы не хотите, чтобы прочитать все это, Правила управления памятью являются наиболее важной частью.

Обычно при использовании основных данных вы применяете те же правила управления памятью, но есть некоторые предостережения .

0 голосов
/ 19 января 2011

Ваше полное заявление об освобождении объектов абсолютно неверно.На самом деле, даже думать о сохранении счета объекта неправильно.Если у вас есть объект, и вы отбрасываете ссылку на принадлежащий объект, вы должны освободить его.Это основное правило.Если вы не являетесь владельцем объекта, вы не имеете права выпускать его.Для получения более подробной информации прочитайте Руководство по программированию управления памятью какао .

Что касается вашего основного вопроса: «Является ли управление памятью объектов Core Data таким же, как все остальное?», Ответ - да,Базовые данные хранятся в различных объектах, и есть некоторые сложности с ошибочным поведением, но правила владения точно такие же, как и у остального Какао.

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