очистка переменных в finalize и Dealloc

Есть ли метод, который вызывается перед финализацией, и который я могу использовать для очистки, как обычно, для которой я использую Dealloc?

С отключенным GarbageCollection в методе Dealloc я выполняю очистку, например, устанавливаю общедоступные, сохраненные, экземплярные переменные на ноль (это освободит и установит указатель на ноль).

Apple говорит, что вы не должны делать это в методе finalize, если вы включаете GC.

Допустим, я создаю подкласс NSView с сохраненным свойством NSTimer. Чтобы убедиться, что таймер недействителен, мне нужно вызвать его недействительность до/во время освобождения подкласса. Когда GC выключен, я просто говорю [self.time invalidate] и устанавливаю его в nil в методе Dealloc.

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

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


person joels    schedule 15.12.2011    source источник


Ответы (1)


Неа. Если у вас есть настраиваемый элемент управления и у вас есть переменные, которые что-то сохраняют. Вам нужно создать выход к этому элементу управления и очистить vars, которые вы сохранили.

person joels    schedule 23.12.2011