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Возвращаемое значение
YEStrueесли сборка «мусора» включена для текущего процесса, иначеNOfalse.Обсуждение
Этот метод возвраты
NOfalseесли сборка «мусора» идет, но была временно приостановлена (использованиеdisable).Проверять, использует ли текущий процесс проверку сборки «мусора» результат
[NSGarbageCollector defaultCollector]. ЕслиdefaultCollectornil, тогда сборка «мусора» постоянно выключена. Если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Возвращаемое значение
YEStrueесли набор в настоящее время происходит, иначеNOfalse.Оператор импорта
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.
