NSGarbageCollector
NSGarbageCollector
обеспечивает удобный интерфейс для системы сборки «мусора».
Сборщик «мусора» какао является консервативным сборщиком «мусора» поколений. Это использует «барьеры записи» для обнаружения перекрестных хранилищ поколений указателей так, чтобы «молодые» объекты могли быть собраны быстро.
Вы включаете сборку «мусора» (GC) при помощи -fobjc-gc compiler
опция. Этот переключатель вызывает генерацию примитивов присвоения барьера записи. Необходимо использовать эту опцию на файле главного приложения и всех других, используемых приложением, включая платформы и пакеты. Пакеты проигнорированы, если они не способны к GC.
Коллектор определяет то, что является мусором путем рекурсивного исследования всех узлов начиная с глобальных переменных, возможные узлы, на которые ссылаются от штабелей потока и всех узлов, отмеченных как наличие «внешних» ссылок. Узлы, не достигнутые этим поиском, считают мусором. Слабые ссылки на узлы мусора тогда очищены.
Узлы мусора, которые являются объектами, отправляются (в произвольном порядке) a finalize
сообщение, и в конце концов finalize
сообщения были отправлены, их память восстанавливается. Это - ошибка периода выполнения (называемый «восстановлением») для хранения объекта, завершаемого в тот, который не является. Для получения дополнительной информации посмотрите Реализацию завершить Метода в Руководстве по программированию Сборки «мусора».
Можно запросить набор от любого потока (см. collectIfNeeded
и collectExhaustively
).
Оператор импорта
Не применимый
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.5 и позже.
Осуждаемый в OS X v10.10.
-
defaultCollector + defaultCollector
(OS X v10.10)Возвращает сборщик «мусора» по умолчанию.
Объявление
Objective C
+ (id)defaultCollector
Возвращаемое значение
Сборщик «мусора» по умолчанию для текущего процесса. Возвраты
nil
если текущий процесс не работает со сборкой «мусора».Обсуждение
Существует самое большее один сборщик «мусора» для Какао в единственном процессе.
Оператор импорта
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.5 и позже.
Осуждаемый в OS X v10.10.
-
отключить - отключить
(OS X v10.10)Временно отключает наборы.
Объявление
Objective C
- (void)disable
Обсуждение
Вызовы этого метода могут быть вложены. Чтобы повторно включить набор, необходимо отправить коллектор
enable
обменивайтесь сообщениями один раз для каждого вызова этого метода.Оператор импорта
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.5 и позже.
Осуждаемый в OS X v10.10.
См. также
-
включить - включить
(OS X v10.10)Включает набор после того, как был отключен набор.
Объявление
Objective C
- (void)enable
Обсуждение
Этот метод балансирует единственный вызов
disable
. Чтобы повторно включить набор, этот метод должен быть вызван так много раз, как былdisable
.Оператор импорта
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.5 и позже.
Осуждаемый в OS X v10.10.
См. также
-
isEnabled - isEnabled
(OS X v10.10)Возвращает булево значение, указывающее, включается ли сборка «мусора» в настоящее время для текущего процесса.
Объявление
Objective C
- (BOOL)isEnabled
Возвращаемое значение
YES
true
если сборка «мусора» включена для текущего процесса, иначеNO
false
.Обсуждение
Этот метод возвраты
NO
false
если сборка «мусора» идет, но была временно приостановлена (использованиеdisable
).Проверять, использует ли текущий процесс проверку сборки «мусора» результат
[NSGarbageCollector defaultCollector]
. ЕслиdefaultCollector
nil
, тогда сборка «мусора» постоянно выключена. ЕслиdefaultCollector
неnil
, тогда текущий процесс использует сборку «мусора» — можно тогда использоватьisEnabled
определить, позволяют ли коллектору фактически работать прямо сейчас.Оператор импорта
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.5 и позже.
Осуждаемый в OS X v10.10.
См. также
-
isCollecting - isCollecting
(OS X v10.6)Возвращает булево значение, указывающее, в настоящее время происходит ли набор.
Объявление
Objective C
- (BOOL)isCollecting
Возвращаемое значение
YES
true
если набор в настоящее время происходит, иначеNO
false
.Оператор импорта
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.0 и позже.
Осуждаемый в OS X v10.6.
-
collectExhaustively - collectExhaustively
(OS X v10.10)Говорит получателю собираться многократно.
Объявление
Objective C
- (void)collectExhaustively
Обсуждение
Вы используете этот метод, чтобы указать к коллектору, что это должно выполнить исчерпывающий набор. Набор подвергается прерыванию на вводе данных пользователем.
Оператор импорта
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.5 и позже.
Осуждаемый в OS X v10.10.
-
collectIfNeeded - collectIfNeeded
(OS X v10.10)Если пороги потребления памяти были превышены, говорит получателю собираться.
Объявление
Objective C
- (void)collectIfNeeded
Обсуждение
Вы используете этот метод, чтобы указать к коллектору, что существует возможность выполнить набор. Набор подвергается прерыванию на вводе данных пользователем.
Оператор импорта
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.5 и позже.
Осуждаемый в OS X v10.10.
-
disableCollectorForPointer: - disableCollectorForPointer:
(OS X v10.10)Указывает, что не будет собрана данная подсказка.
Объявление
Objective C
- (void)disableCollectorForPointer:(const void *)
ptr
Параметры
ptr
Указатель на память, которая не должна быть собрана.
Обсуждение
Вы используете этот метод, чтобы гарантировать, что не будет собрана память в данном адресе. Можно использовать это, например, для создания новых корневых объектов:
NSMutableDictionary *globalDictionary;
globalDictionary = [NSMutableDictionary dictionary];
[[NSGarbageCollector defaultCollector]
disableCollectorForPointer:globalDictionary];
Новый словарь не будет предметом коллекционирования и сохранится для времени жизни приложения, если это не будет впоследствии передано как параметр
enableCollectorForPointer:
. Для больше о корневых объектах и отсканированной памяти, см. Руководство по программированию Сборки «мусора».Оператор импорта
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.5 и позже.
Осуждаемый в OS X v10.10.
См. также
-
enableCollectorForPointer: - enableCollectorForPointer:
(OS X v10.10)Указывает, что может быть собрана данная подсказка.
Объявление
Objective C
- (void)enableCollectorForPointer:(const void *)
ptr
Параметры
ptr
Указатель на память, которая может быть собрана.
Обсуждение
Вы используете этот метод для создания памяти, ранее отмеченной как безнадежная в отношении оплаты. Например, учитывая адрес глобального словаря, создаваемого в
disableCollectorForPointer:
, Вы могли сделать предмет коллекционирования словаря следующим образом:[[NSGarbageCollector defaultCollector]
enableCollectorForPointer:globalDictionary];
Для больше о корневых объектах и отсканированной памяти, см. Руководство по программированию Сборки «мусора».
Оператор импорта
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.5 и позже.
Осуждаемый в OS X v10.10.
См. также
-
Возвращает зону неотсканированной памяти.
Объявление
Objective C
- (NSZone *)zone
Возвращаемое значение
Зона памяти не сканирующейся памяти.
Обсуждение
Коллектор обеспечивает a
NSZoneMalloc
- интерфейс выделения стиля, прежде всего для совместимости с существующим кодом, поддерживающим зональное сродство. Такая память не сканируется, и необходимо освободить ее использованиеNSZoneFree
. Это точно эквивалентно вызовуNSAllocateCollectable
с опциейNSCollectorDisabledOption
.Необходимо обычно выделять, собрал «мусор» использование памяти
NSAllocateCollectable
.Оператор импорта
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.5 и позже.
Осуждаемый в OS X v10.10.