Как использовать метод финализации в Objective-C? - PullRequest
0 голосов
/ 31 июля 2010

Как вызвать метод -finalize в Objective-C для сбора мусора?

Ответы [ 3 ]

9 голосов
/ 31 июля 2010

iOS не предлагает сборщик мусора :

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

0 голосов
/ 26 июля 2013

Существует автоматический подсчет ссылок (ARC), который осуществляет управление памятью от нашего имени. Нам не нужно использовать retain, высвобождайте, как эти операторы, с объектами, о которых они заботятся ...

Но нет выделенного сборщика мусора, как в c #.

Вот как это работает:

когда ARC включен, компилятор добавляет retain, release, autolease, как эти операторы сам по себе.

но если бы мы использовали ARC, мы не могли бы выпустить какой-либо объект вручную, что является единственным недостатком этого подхода.

0 голосов
/ 31 июля 2010

Как говорит Алекс Рейнольдс, в iOS нет (и, возможно, никогда не будет) сборки мусора.Кроме того, в иерархии объектов NextStep (вы знаете все классы с NS в его именах?) Есть метод, называемый dealloc (http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html#//apple_ref/occ/instm/NSObject/dealloc).). Он может переопределить его (и должен делать это, если что-то есть), чтобыочистить. Например, вы должны освободить другие объекты, удерживаемые экземпляром.

Но не пропустите «Вы никогда не отправляете сообщение dealloc напрямую»!

Привет

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