функция освобождения в xcode 4.1

Недавно я пытался изучить цель C для разработки iphone, однако я купил книгу по разработке iPhone 3, поэтому она устарела. Я заметил отличия в макете кода от примеров из книги и кода по умолчанию xCode. Мой вопрос связан с функцией -void (dealloc).

Я создал базовый проект «на основе представления», и в моей книге говорится, что в моем файле viewController.m есть функция «dealloc», однако в xcode 4.1 нет функции Dealloc в viewController.m, единственной найденной функции Dealloc. id в файле AppDelegate.m.

Итак, мой вопрос, наконец:

Если я синтезирую переменную экземпляра в представлении controller.m

    @synthesize nameField;

затем мне создать функцию Dealloc в viewController.m, чтобы освободить эту переменную?

    - (void) dealloc
    {
        [nameField release];
        [numberField release];
        [super dealloc];
    }

person user1005240    schedule 20.10.2011    source источник


Ответы (1)


Это зависит от того, было ли свойство, объявленное вами для nameField, назначенным, сохраненным или скопированным (вы должны изучить руководство по управлению памятью, чтобы понять это). По сути, если свойство сохраняется или копируется, вы должны освободить его в методе Dealloc. В противном случае вы не должны.

person jbat100    schedule 20.10.2011
comment
Да, свойство, которое я использовал, было сохранено, теперь я понимаю, как и почему использовать релиз, меня только что бросила та же самая функция Dealloc в файле delegate.m, но после выполнения еще нескольких примеров я теперь вижу, что все, что я объявляю в viewcontroller не имеет прямого отношения к делегату и поэтому должен управляться в файле viewcontroller.m. Спасибо за ваше понимание! - person user1005240; 22.10.2011