NSMutableArray добавление к себе - конвенционный вопрос - PullRequest
0 голосов
/ 23 апреля 2011

У меня есть класс с именем Singularity и внутри него - метод для создания внутренних объектов объекта с именем createSingularity ::.
Мне интересно, является ли какой-либо из этих двух методов добавления к себе более подходящим / более эффективным.

Первый метод - это просто добавить объект к себе напрямую, затем к NSMutableArray. Второй метод - добавить объект в NSMutableArray, а затем добавить его к себе. Проверьте это:

Метод 1 -

    Singularity *asing = [[Singularity alloc]init];
    [sing createSingularity:ccp(150,150) :ccp(2000,150)];
    [self addChild: sing.BlackHoleParticle];
    [_objects addObject: sing];
    [sing release];

Метод 2 -

    Singularity *sing = [[Singularity alloc]init];
    [sing createSingularity:ccp(150,150) :ccp(2000,150)];
    [_objects addObject:sing];
    [sing release];
    Singularity *singu = [_objects lastObject];
    [self addChild:singu.whiteHoleParticle];
    [self addChild:singu.blackHoleParticle];
    [singu release];  

Обратите внимание, что эти объекты Singularity имеют boundingBoxes и должны проверяться путем перечисления массива _objects.
Спасибо!

1 Ответ

4 голосов
/ 23 апреля 2011

Метод 1 правильный, а метод 2. неправильный.

В методе 2 singu - это ссылка на объект в коллекции, и вы освобождаете этот объект.Вы не можете выпустить объект, который вам не принадлежит.Удалите последнюю строку

[singu release]; 

и тогда все в порядке.Но нет смысла создавать несколько объектов для доступа к элементу в функции.Так что придерживайтесь метода 1

...