NSArray, чтобы остаться в силе всегда - PullRequest
0 голосов
/ 02 апреля 2012

У меня есть приложение, которое по методу init мне нужно загрузить массив с множеством фонов, и тогда этот массив останется действительным во время этой сцены, пока я не покину его (и не отпущу его в dealloc)

в моем init у меня есть это:

backgrounds=[ [NSArray alloc]  initWithObjects:BACK,BACK1,BACK2,BACK3,BACK4,BACK5,BACK6,BACK7,BACK8,BACK9, nil];

    int imageDelta=1;
    for (background in backgrounds)  
        {
            background.position=ccp(240*imageDelta,160);
            imageDelta=imageDelta+2;
            [self addChild:background ];
        }
     //release backgrounds here ????

теперь мой вопрос: может i и должен i выпустить backgrounds сейчас ??мне все еще нужен этот массив, чтобы быть действительным во время кода.кажется, я действительно не понял массивы.

спасибо большое.

Ответы [ 3 ]

0 голосов
/ 02 апреля 2012

Нет, вы не должны освобождать этот массив фонов в методе init, потому что это переменная экземпляра. Вы правы, говоря, что он должен выпускать его только в dealloc, то есть, когда вы закончили с ним.

Если вы освободите этот массив фонов в методе init, вы не сможете получить к нему доступ после этого, потому что это будет освобожденный экземпляр. Я так понимаю, причина, по которой у вас есть массив фонов в качестве переменной экземпляра, в том, что вы хотите получить к нему доступ снова?

0 голосов
/ 02 апреля 2012

если вам нужен массив фонов в качестве переменной экземпляра (вам понадобится переменная во время жизни объекта), то вы должны освободить его в dealoc.

если вам нужен массив фонов только в методе init, измените его на локальную переменную и используйте:

NSArray *backgrounds = [NSArray initWithObjects:BACK,BACK1,BACK2,BACK3,BACK4,BACK5,BACK6,BACK7,BACK8,BACK9, nil];

так что вам не нужно заботиться об этом, так как это авто-релиз.

0 голосов
/ 02 апреля 2012

Нет, причина в том, что фон не выделяется, поэтому вам не нужно об этом заботиться.

Если вы не указали явное выделение переменной, она помечается как autorelease

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