Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка платформы основы ссылка класса NSObject

Опции
Развертывание Target:

На этой странице
Язык:

NSObject

NSObject корневой класс большинства иерархий классов Objective C. Через NSObject, объекты наследовали основной интерфейс к системе во время выполнения и возможности вести себя, поскольку возражает Objective C.

Наследование


Соответствует


Оператор импорта


Swift

import Foundation

Objective C

@import Foundation;

Доступность


Доступный в OS X v10.0 и позже.
  • Инициализирует класс, прежде чем он получит свое первое сообщение.

    Объявление

    Swift

    class func initialize()

    Objective C

    + (void)initialize

    Обсуждение

    Время выполнения отправляет initialize к каждому классу в программе как раз перед классом или любым классом, наследовавшимся от него, отправляется его первое сообщение из программы. Время выполнения отправляет initialize обменивайтесь сообщениями к классам ориентированным на многопотоковое исполнение способом. Суперклассы получают это сообщение перед своими подклассами. Если подклассы не реализуют, реализацию суперкласса можно вызвать многократно initialize— если подклассы явно вызывают, время выполнения вызовет наследованную реализацию — или [super initialize]. Если Вы хотите защитить себя от того, чтобы быть выполненным многократно, можно структурировать реализацию вдоль этих строк:

    • + (void)initialize {
    • if (self == [ClassName self]) {
    • // ... do the initialization ...
    • }
    • }

    Поскольку initialize вызывается ориентированным на многопотоковое исполнение способом и порядком initialize быть обращенным различных классов не гарантируется, важно сделать минимальную сумму работы, необходимой в initialize методы. В частности, любой код, берущий блокировки, которые могли бы требоваться другими классами в их initialize методы несут ответственность для приведения к мертвым блокировкам. Поэтому Вы не должны полагаться initialize для сложной инициализации, и должен вместо этого ограничить его прямым, класс локальная инициализация.

    Специальные замечания

    initialize вызывается только один раз на класс. Если Вы хотите выполнить независимую инициализацию для класса и для категорий класса, необходимо реализовать load методы.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

    Доступный в OS X v10.0 и позже.

    См. также

    – init
    + загрузка
    class (NSObject протокол)

  • Вызванный каждый раз, когда класс или категория добавляются ко времени выполнения Objective C; реализуйте этот метод для выполнения специфичного для класса поведения после загрузки.

    Объявление

    Swift

    class func load()

    Objective C

    + (void)load

    Обсуждение

    load сообщение отправляется в классы и категории, и динамично загружающиеся и статически соединяющиеся, но только если недавно загруженный класс или категория реализуют метод, который может ответить.

    Порядок инициализации следующие:

    1. Все инициализаторы в любой платформе Вы соединяетесь с.

    2. Все +load методы в Вашем изображении.

    3. Весь C++ статические инициализаторы и C/C++ __attribute__(constructor) функции в Вашем изображении.

    4. Все инициализаторы в платформах, соединяющихся с Вами.

    Кроме того:

    • Класс +load метод вызывают после всех его суперклассов +load методы.

    • Категория +load метод вызывают после собственного класса +load метод.

    В пользовательской реализации load можно поэтому безопасно передать другие несвязанные классы от того же изображения, но любого load методы, реализованные теми классами еще, могли не работать.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

    Доступный в OS X v10.0 и позже.

  • Возвращает новый экземпляр класса получения.

    Объявление

    Swift

    class func alloc() -> Self!

    Objective C

    + (instancetype)alloc

    Возвращаемое значение

    Новый экземпляр получателя.

    Обсуждение

    isa переменная экземпляра нового экземпляра инициализируется к структуре данных, описывающей класс; память для всех других переменных экземпляра установлена в 0.

    Необходимо использовать init... метод для завершения процесса инициализации. Например:

    • TheClass *newObject = [[TheClass alloc] init];

    Не переопределять alloc включать код инициализации. Вместо этого реализуйте специфичные для класса версии init... методы.

    По историческим причинам, alloc вызывает allocWithZone:.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

    Доступный в OS X v10.0 и позже.

    См. также

    – init

  • Возвращает новый экземпляр класса получения.

    Объявление

    Swift

    class func allocWithZone(_ zone: NSZone) -> Self!

    Objective C

    + (instancetype)allocWithZone:(struct _NSZone *)zone

    Параметры

    zone

    Этот параметр проигнорирован.

    Возвращаемое значение

    Новый экземпляр получателя.

    Обсуждение

    isa переменная экземпляра нового экземпляра инициализируется к структуре данных, описывающей класс; память для всех других переменных экземпляра установлена в 0.

    Необходимо использовать init... метод для завершения процесса инициализации. Например:

    • TheClass *newObject = [[TheClass allocWithZone:nil] init];

    Не переопределять allocWithZone: включать любой код инициализации. Вместо этого специфичные для класса версии init... методы.

    Этот метод существует по историческим причинам; зоны памяти больше не используются Objective C.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

    Доступный в OS X v10.0 и позже.

  • Реализованный подклассами для инициализации нового объекта (получатель) сразу после того, как память для него была выделена.

    Объявление

    Swift

    init()

    Objective C

    - (instancetype)init

    Возвращаемое значение

    Инициализированный объект, или nil если бы объект не мог бы быть создан по некоторым причинам, который не привел бы к исключению.

    Обсуждение

    init сообщение вместе с alloc (или allocWithZone:) сообщение в той же строке кода:

    • TheClass *newObject = [[TheClass alloc] init];

    Объект не готов использоваться, пока он не был инициализирован. init метод, определенный в NSObject класс не делает никакой инициализации; это просто возвращается self.

    В пользовательской реализации этого метода необходимо вызвать определяемый инициализатор super, тогда инициализируют и возвращают новый объект. Если новый объект не может быть инициализирован, метод должен возвратиться nil. Например, гипотетическое BuiltInCamera класс мог бы возвратиться nil от init метод, если работается устройство, не имеющее никакой камеры.

    • - (id)init {
    • self = [super init];
    • if (self) {
    • // Initialize self.
    • }
    • return self;
    • }

    В некоторых случаях, init метод мог бы возвратить объект замены. Необходимо поэтому всегда использовать объект, возвращенный init, а не тот, возвращенный alloc или allocWithZone:, в последующем коде.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

    Доступный в OS X v10.0 и позже.

  • Возвращает объект, возвращенный copyWithZone:.

    Объявление

    Swift

    func copy() -> AnyObject

    Objective C

    - (id)copy

    Возвращаемое значение

    Объект, возвращенный NSCopying метод протокола copyWithZone:,.

    Обсуждение

    Это - удобный метод для классов, принимающих NSCopying протокол. Если нет никакой реализации для, исключение повышено copyWithZone:.

    NSObject самостоятельно не поддерживает NSCopying протокол. Подклассы должны поддерживать протокол и реализовать copyWithZone: метод. Версия подкласса copyWithZone: метод должен отправить сообщение в super во-первых, для слияния его реализации, если подкласс не убывает непосредственно от NSObject.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

    Доступный в OS X v10.0 и позже.

  • Возвращает получатель.

    Объявление

    Objective C

    + (id)copyWithZone:(struct _NSZone *)zone

    Параметры

    zone

    Этот параметр проигнорирован.

    Возвращаемое значение

    Получатель.

    Обсуждение

    Этот метод существует, так объекты класса могут использоваться в ситуациях, где Вам нужен объект, соответствующий NSCopying протокол. Например, этот метод позволяет Вам использовать объект класса в качестве ключа к NSDictionary объект. Вы не должны переопределять этот метод.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Доступность

    Доступный в OS X v10.0 и позже.

    См. также

    – копия

  • Возвращает объект, возвращенный mutableCopyWithZone: где зона nil.

    Объявление

    Swift

    func mutableCopy() -> AnyObject

    Objective C

    - (id)mutableCopy

    Возвращаемое значение

    Объект, возвращенный NSMutableCopying метод протокола mutableCopyWithZone:, где зона nil.

    Обсуждение

    Это - удобный метод для классов, принимающих NSMutableCopying протокол. Если нет никакой реализации для, исключение повышено mutableCopyWithZone:.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

    Доступный в OS X v10.0 и позже.

  • Возвращает получатель.

    Объявление

    Objective C

    + (id)mutableCopyWithZone:(struct _NSZone *)zone

    Параметры

    zone

    Зона памяти, в которой можно создать копию получателя.

    Возвращаемое значение

    Получатель.

    Обсуждение

    Этот метод существует, так объекты класса могут использоваться в ситуациях, где Вам нужен объект, соответствующий NSMutableCopying протокол. Например, этот метод позволяет Вам использовать объект класса в качестве ключа к NSDictionary объект. Вы не должны переопределять этот метод.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Доступность

    Доступный в OS X v10.0 и позже.

  • Освобождает память, занятую получателем.

    Объявление

    Objective C

    - (void)dealloc

    Обсуждение

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

    Вы переопределяете этот метод для избавления от ресурсов кроме переменных экземпляра объекта, например:

    • - (void)dealloc {
    • free(myBigBlockOfMemory);
    • }

    В реализации dealloc, не вызывайте реализацию суперкласса. Необходимо попытаться избежать управлять временем жизни ограниченных ресурсов, таких как использование дескрипторов файлов dealloc.

    Вы никогда не отправляете a dealloc обменивайтесь сообщениями непосредственно. Вместо этого объект dealloc метод вызывается временем выполнения. Дополнительную информацию см. в Усовершенствованном Руководстве по программированию управления памятью.

    Специальные замечания

    Если не с помощью ARC, реализации dealloc должен вызвать реализацию суперкласса как ее последнюю инструкцию.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Доступность

    Доступный в OS X v10.0 и позже.

  • Выделяет новый экземпляр класса получения, отправляет его init сообщение и возвраты инициализированный объект.

    Объявление

    Swift

    class func `new`() -> Self!

    Objective C

    + (instancetype)new

    Возвращаемое значение

    Новый экземпляр получателя.

    Обсуждение

    Этот метод является комбинацией alloc и init. Как alloc, это инициализирует isa переменная экземпляра нового объекта, таким образом, это указывает на структуру данных класса. Это тогда вызывает init метод для завершения процесса инициализации.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

    Доступный в OS X v10.0 и позже.

  • Возвращает объект класса.

    Объявление

    Objective C

    + (Class)class

    Возвращаемое значение

    Объект класса.

    Обсуждение

    Обратитесь к классу только его именем, когда это будет получатель сообщения. Во всех других случаях объект класса должен быть получен через это или похожий метод. Например, здесь SomeClass передается как параметр isKindOfClass: метод (объявленный в NSObject протокол):

    • BOOL test = [self isKindOfClass:[SomeClass class]];

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Доступность

    Доступный в OS X v10.0 и позже.

    См. также

    class (NSObject протокол)
    NSClassFromString
    NSStringFromClass

  • Возвращает объект класса для суперкласса получателя.

    Объявление

    Swift

    class func superclass() -> AnyClass?

    Objective C

    + (Class)superclass

    Возвращаемое значение

    Объект класса для суперкласса получателя.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

    Доступный в OS X v10.0 и позже.

    См. также

    + класс
    superclass (NSObject протокол)

  • Возвращает булево значение, указывающее, является ли класс получения подклассом, или идентичный, данный класс.

    Объявление

    Swift

    class func isSubclassOfClass(_ aClass: AnyClass) -> Bool

    Objective C

    + (BOOL)isSubclassOfClass:(Class)aClass

    Параметры

    aClass

    Объект класса.

    Возвращаемое значение

    YEStrue если класс получения является подклассом — или идентичный —aClass, иначе NOfalse.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

    Доступный в OS X v10.2 и позже.

  • Возвращает булево значение, указывающее, способны ли экземпляры получателя к ответу на данный селектор.

    Объявление

    Swift

    class func instancesRespondToSelector(_ aSelector: Selector) -> Bool

    Objective C

    + (BOOL)instancesRespondToSelector:(SEL)aSelector

    Параметры

    aSelector

    Возвращаемое значение

    YEStrue если экземпляры получателя способны к ответу к aSelector сообщения, иначе NOfalse.

    Обсуждение

    Если aSelector сообщения передаются к другим объектам, экземпляры класса в состоянии получить те сообщения без ошибки даже при том, что возвращается этот метод NOfalse.

    Для выяснения у класса, может ли это, а не его экземпляры, реагировать на определенное сообщение, отправляют к классу вместо этого NSObject метод экземпляра протокола respondsToSelector:.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

    Доступный в OS X v10.0 и позже.

    См. также

    – forwardInvocation:

  • Возвращает булево значение, указывающее, соответствует ли получатель данному протоколу.

    Объявление

    Swift

    class func conformsToProtocol(_ `aProtocol`: Protocol) -> Bool

    Objective C

    + (BOOL)conformsToProtocol:(Protocol *)aProtocol

    Параметры

    aProtocol

    Протокол.

    Возвращаемое значение

    YEStrue если получатель соответствует aProtocol, иначе NOfalse.

    Обсуждение

    Класс, как говорят, “соответствует” протоколу, если это принимает протокол или наследовалось от другого класса, принимающего его. Протоколы приняты путем перечисления их в угловых скобках после объявления интерфейса. Например, здесь MyClass принимает (фиктивный) AffiliationRequests и Normalization протоколы:

    • @interface MyClass : NSObject <AffiliationRequests, Normalization>

    Класс также соответствует любым протоколам, включенным в протоколы, которые он принимает или наследовал. Протоколы включают другие протоколы таким же образом, классы принимают их. Например, здесь AffiliationRequests протокол соединяется Joining протокол:

    • @protocol AffiliationRequests <Joining>

    Если класс принимает протокол, включающий другой протокол, он должен также реализовать все методы в объединенном протоколе или наследовать те методы от класса, принимающего его.

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

    Протокол, требуемый как параметр этого метода, может быть указан с помощью @protocol() директива:

    • BOOL canJoin = [MyClass conformsToProtocol:@protocol(Joining)];

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

    Доступный в OS X v10.0 и позже.

    См. также

    + conformsToProtocol:

  • Определяет местоположение и возвращает адрес реализации получателя метода, таким образом, это можно вызвать как функция.

    Объявление

    Swift

    func methodForSelector(_ aSelector: Selector) -> IMP

    Objective C

    - (IMP)methodForSelector:(SEL)aSelector

    Параметры

    aSelector

    Селектор, идентифицирующий метод, для которого можно возвратить адрес реализации. Селектор должен быть допустимым и не -NULL. Если в сомнении, используйте respondsToSelector: метод для проверки прежде, чем передать селектор methodForSelector:.

    Возвращаемое значение

    Адрес реализации получателя aSelector.

    Обсуждение

    Если получатель является экземпляром, aSelector должен относиться к методу экземпляра; если получатель является классом, он должен относиться к методу класса.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

    Доступный в OS X v10.0 и позже.

  • Определяет местоположение и возвращает адрес реализации метода экземпляра, идентифицированного данным селектором.

    Объявление

    Swift

    class func instanceMethodForSelector(_ aSelector: Selector) -> IMP

    Objective C

    + (IMP)instanceMethodForSelector:(SEL)aSelector

    Параметры

    aSelector

    Селектор, идентифицирующий метод, для которого можно возвратить адрес реализации. Селектор должен быть не -NULL и допустимый для получателя. Если в сомнении, используйте respondsToSelector: метод для проверки прежде, чем передать селектор methodForSelector:.

    Возвращаемое значение

    Адрес реализации aSelector метод экземпляра.

    Обсуждение

    Если экземпляры получателя не могут ответить на, ошибка сгенерирована aSelector сообщения.

    Используйте этот метод для выяснения у объекта класса реализацию методов экземпляра только. Для выяснения у класса реализацию метода класса отправьте methodForSelector: метод экземпляра для класса вместо этого.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

    Доступный в OS X v10.0 и позже.

  • Возвраты NSMethodSignature объект, содержащий описание метода экземпляра, идентифицированного данным селектором.

    Объявление

    Objective C

    + (NSMethodSignature *)instanceMethodSignatureForSelector:(SEL)aSelector

    Параметры

    aSelector

    Селектор, идентифицирующий метод, для которого можно возвратить адрес реализации.

    Возвращаемое значение

    NSMethodSignature объект, содержащий описание метода экземпляра, идентифицированного aSelector, или nil если не может быть найден метод.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Доступность

    Доступный в OS X v10.0 и позже.

  • Возвраты NSMethodSignature объект, содержащий описание метода, идентифицированного данным селектором.

    Объявление

    Objective C

    - (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector

    Параметры

    aSelector

    Селектор, идентифицирующий метод, для которого можно возвратить адрес реализации. Когда получатель является экземпляром, aSelector должен идентифицировать метод экземпляра; когда получатель является классом, он должен идентифицировать метод класса.

    Возвращаемое значение

    NSMethodSignature объект, содержащий описание метода, идентифицированного aSelector, или nil если не может быть найден метод.

    Обсуждение

    Этот метод используется в реализации протоколов. Этот метод также используется в ситуациях где NSInvocation объект должен быть создан, такой как во время передачи сообщения. Если Ваш объект поддерживает делегата или способен к обработке сообщений, что это непосредственно не реализует, необходимо переопределить этот метод для возврата надлежащей сигнатуры метода.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Доступность

    Доступный в OS X v10.0 и позже.

  • Возвращает строку, представляющую содержание класса получения.

    Объявление

    Swift

    class func description() -> String

    Objective C

    + (NSString *)description

    Возвращаемое значение

    Строка, представляющая содержание класса получения.

    Обсуждение

    Объектная команда печати отладчика вызывает этот метод для создания текстового описания объекта.

    NSObjectреализация этого метода просто распечатывает имя класса.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

    Доступный в OS X v10.0 и позже.

    См. также

    description (NSObject протокол)

  • Прокси для принимающего объекта (только для чтения)

    Объявление

    Swift

    var autoContentAccessingProxy: AnyObject { get }

    Objective C

    @property(readonly, retain) id autoContentAccessingProxy

    Обсуждение

    Если получатель принимает, это свойство возвращает прокси для принимающего объекта NSDiscardableContent протокол и все еще имеет неотброшенное содержание.

    Вызовы прокси beginContentAccess на получателе для хранения содержания доступным пока жизни прокси и вызовы endContentAccess когда освобожден прокси.

    Интерфейсный объект является иначе подклассом NSProxy и передает сообщения к исходному объекту получателя как NSProxy делает.

    Этот метод может использоваться для сокрытия NSDiscardableContent энергозависимость содержания объекта путем создания объекта, реагирующего на те же сообщения, но содержащего содержание исходного получателя, доступного пока создаваемые жизни прокси. Таким образом скрытый, NSDiscardableContent объект (посредством прокси) может быть выделен не подозревающим получателям объекта, которые иначе не знали бы, что им, возможно, придется вызвать beginContentAccess и endContentAccess вокруг определенных использований (определенный для каждого NSDiscardableContent объект) NSDiscardableContent объект.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.6 и позже.

  • Вызывает метод получателя на текущем потоке с помощью режима по умолчанию после задержки.

    Объявление

    Objective C

    - (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay

    Параметры

    aSelector

    Селектор, идентифицирующий метод для вызова. Метод не должен иметь значительного возвращаемого значения и должен взять отдельный аргумент идентификатора типа или никакие параметры.

    anArgument

    Параметр для передачи методу, когда это вызывается. Передача nil если метод не берет параметр.

    delay

    Минимальное время, перед которым отправляется сообщение. Указание задержки 0 не обязательно заставляет селектор быть сразу выполненным. Селектор все еще ставится в очередь на цикле выполнения потока и выполняется как можно скорее.

    Обсуждение

    Этот метод устанавливает таймер для выполнения aSelector сообщение на цикле выполнения текущего потока. Таймер сконфигурирован для выполнения в режиме по умолчанию (NSDefaultRunLoopMode). Когда таймер стреляет, поток пытается исключить сообщение из очереди от цикла выполнения и выполнить селектор. Если цикл выполнения работает и в режиме по умолчанию, это успешно выполняется; иначе, таймер ожидает, пока цикл выполнения не находится в режиме по умолчанию.

    Если Вы хотите, чтобы сообщение было исключено из очереди, когда цикл выполнения находится в режиме кроме режима по умолчанию, используйте performSelector:withObject:afterDelay:inModes: метод вместо этого. Если Вы не уверены, является ли текущий поток основным потоком, можно использовать performSelectorOnMainThread:withObject:waitUntilDone: или performSelectorOnMainThread:withObject:waitUntilDone:modes: метод, чтобы гарантировать, что Ваш селектор выполняется на основном потоке. Для отмены сообщения с очередями используйте cancelPreviousPerformRequestsWithTarget: или cancelPreviousPerformRequestsWithTarget:selector:object: метод.

    Специальные замечания

    Этот метод регистрируется в runloop его текущего контекста и зависит от этого runloop, выполняемый регулярно для выполнения правильно. Один общий контекст, где Вы могли бы вызвать этот метод и закончить тем, что регистрировались в runloop, автоматически не выполняющемся регулярно, будучи вызванным очередью отгрузки. При необходимости в этом типе функциональности при работе очереди отгрузки необходимо использовать dispatch_after и связанные методы для получения поведения Вы хотите.

    Оператор импорта

    Objective C

    @import Foundation;

    Доступность

    Доступный в OS X v10.0 и позже.

  • Вызывает метод получателя на текущем потоке с помощью указанных режимов после задержки.

    Объявление

    Objective C

    - (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay inModes:(NSArray *)modes

    Параметры

    aSelector

    Селектор, идентифицирующий метод для вызова. Метод не должен иметь значительного возвращаемого значения и должен взять отдельный аргумент идентификатора типа или никакие параметры.

    anArgument

    Параметр для передачи методу, когда это вызывается. Передача nil если метод не берет параметр.

    delay

    Минимальное время, перед которым отправляется сообщение. Указание задержки 0 не обязательно заставляет селектор быть сразу выполненным. Селектор все еще ставится в очередь на цикле выполнения потока и выполняется как можно скорее.

    modes

    Массив строк, идентифицирующих режимы для соединения с таймером, выполняющим селектор. Этот массив должен содержать по крайней мере одну строку. Если Вы указываете nil или пустой массив для этого параметра, этот метод возвращается, не выполняя указанный селектор. Для получения информации о выполненных режимах цикла посмотрите Циклы Выполнения в Поточной обработке Руководства по программированию.

    Обсуждение

    Этот метод устанавливает таймер для выполнения aSelector сообщение на цикле выполнения текущего потока. Таймер сконфигурирован для выполнения в режимах, указанных modes параметр. Когда таймер стреляет, поток пытается исключить сообщение из очереди от цикла выполнения и выполнить селектор. Если цикл выполнения работает и в одном из указанных режимов, это успешно выполняется; иначе, таймер ожидает, пока цикл выполнения не находится в одном из тех режимов.

    Если Вы хотите, чтобы сообщение было исключено из очереди, когда цикл выполнения находится в режиме кроме режима по умолчанию, используйте performSelector:withObject:afterDelay:inModes: метод вместо этого. Если Вы не уверены, является ли текущий поток основным потоком, можно использовать performSelectorOnMainThread:withObject:waitUntilDone: или performSelectorOnMainThread:withObject:waitUntilDone:modes: метод, чтобы гарантировать, что Ваш селектор выполняется на основном потоке. Для отмены сообщения с очередями используйте cancelPreviousPerformRequestsWithTarget: или cancelPreviousPerformRequestsWithTarget:selector:object: метод.

    Специальные замечания

    Этот метод регистрируется в runloop его текущего контекста и зависит от этого runloop, выполняемый регулярно для выполнения правильно. Один общий контекст, где Вы могли бы вызвать этот метод и закончить тем, что регистрировались в runloop, автоматически не выполняющемся регулярно, будучи вызванным очередью отгрузки. При необходимости в этом типе функциональности при работе очереди отгрузки необходимо использовать dispatch_after и связанные методы для получения поведения Вы хотите.

    Оператор импорта

    Objective C

    @import Foundation;

    Доступность

    Доступный в OS X v10.0 и позже.

  • Вызывает метод получателя на основном потоке с помощью режима по умолчанию.

    Объявление

    Objective C

    - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait

    Параметры

    aSelector

    Селектор, идентифицирующий метод для вызова. Метод не должен иметь значительного возвращаемого значения и должен взять отдельный аргумент идентификатора типа или никакие параметры.

    arg

    Параметр для передачи методу, когда это вызывается. Передача nil если метод не берет параметр.

    wait

    Булевская переменная, указывающая, выполняются ли блоки текущего потока до окончания указанного селектора на получателе на основном потоке. Указать YEStrue блокировать этот поток; иначе, указать NOfalse иметь этот возврат метода сразу.

    Если текущий поток является также основным потоком, и Вы указываете YEStrue для этого параметра сообщение передается и сразу обрабатывается.

    Обсуждение

    Можно использовать этот метод для передачи сообщений к основному потоку приложения. Основной поток охватывает основной цикл выполнения приложения и где NSApplication объект получает события. Сообщение в этом случае является методом текущего объекта, который Вы хотите выполнить на потоке.

    Этот метод ставит сообщение в очередь на цикле выполнения основного потока с помощью общих режимов цикла выполнения — т.е. режимы, связанные с NSRunLoopCommonModes постоянный. Как часть его нормальной обработки цикла выполнения, основной поток исключает сообщение из очереди (предполагающий, что это работает в одном из общих режимов цикла выполнения), и вызывает требуемый метод. Множественные вызовы этого метода от того же потока заставляют соответствующие селекторы быть поставленными в очередь и выполненными в том же том же порядке, в котором были выполнены вызовы.

    Вы не можете отменить поставленное в очередь использование сообщений этого метода. Если Вы хотите опцию отмены сообщения на текущем потоке, необходимо использовать любого performSelector:withObject:afterDelay: или performSelector:withObject:afterDelay:inModes: метод.

    Специальные замечания

    Этот метод регистрируется в runloop его текущего контекста и зависит от этого runloop, выполняемый регулярно для выполнения правильно. Один общий контекст, где Вы могли бы вызвать этот метод и закончить тем, что регистрировались в runloop, автоматически не выполняющемся регулярно, будучи вызванным очередью отгрузки. При необходимости в этом типе функциональности при работе очереди отгрузки необходимо использовать dispatch_after и связанные методы для получения поведения Вы хотите.

    Оператор импорта

    Objective C

    @import Foundation;

    Доступность

    Доступный в OS X v10.2 и позже.

  • Вызывает метод получателя на основном потоке с помощью указанных режимов.

    Объявление

    Objective C

    - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait modes:(NSArray *)array

    Параметры

    aSelector

    Селектор, идентифицирующий метод для вызова. Метод не должен иметь значительного возвращаемого значения и должен взять отдельный аргумент идентификатора типа или никакие параметры.

    arg

    Параметр для передачи методу, когда это вызывается. Передача nil если метод не берет параметр.

    wait

    Булевская переменная, указывающая, выполняются ли блоки текущего потока до окончания указанного селектора на получателе на основном потоке. Указать YEStrue блокировать этот поток; иначе, указать NOfalse иметь этот возврат метода сразу.

    Если текущий поток является также основным потоком, и Вы передаете YEStrue, сообщение сразу выполняется, иначе выполнение ставится в очередь для выполнения в следующий раз через цикл выполнения.

    array

    Массив строк, идентифицирующий режимы, в которых допустимо выполнить указанный селектор. Этот массив должен содержать по крайней мере одну строку. Если Вы указываете nil или пустой массив для этого параметра, этот метод возвращается, не выполняя указанный селектор. Для получения информации о выполненных режимах цикла посмотрите Циклы Выполнения в Поточной обработке Руководства по программированию.

    Обсуждение

    Можно использовать этот метод для передачи сообщений к основному потоку приложения. Основной поток охватывает основной цикл выполнения приложения и где NSApplication объект получает события. Сообщение в этом случае является методом текущего объекта, который Вы хотите выполнить на потоке.

    Этот метод ставит сообщение в очередь на цикле выполнения основного потока с помощью режимов цикла выполнения, указанных в array параметр. Как часть его нормальной обработки цикла выполнения, основной поток исключает сообщение из очереди (предполагающий, что это работает в одном из указанных режимов), и вызывает требуемый метод. Множественные вызовы этого метода от того же потока заставляют соответствующие селекторы быть поставленными в очередь и выполненными в том же том же порядке, в котором вызовы были выполнены, предположив, что связанные режимы цикла выполнения для каждого селектора являются тем же. При указании различных режимов для каждого селектора любые селекторы, связанный режим которых не соответствует текущий режим цикла выполнения, пропускаются, пока цикл выполнения впоследствии не выполняется в том режиме.

    Вы не можете отменить поставленное в очередь использование сообщений этого метода. Если Вы хотите опцию отмены сообщения на текущем потоке, необходимо использовать любого performSelector:withObject:afterDelay: или performSelector:withObject:afterDelay:inModes: метод.

    Специальные замечания

    Этот метод регистрируется в runloop его текущего контекста и зависит от этого runloop, выполняемый регулярно для выполнения правильно. Один общий контекст, где Вы могли бы вызвать этот метод и закончить тем, что регистрировались в runloop, автоматически не выполняющемся регулярно, будучи вызванным очередью отгрузки. При необходимости в этом типе функциональности при работе очереди отгрузки необходимо использовать dispatch_after и связанные методы для получения поведения Вы хотите.

    Оператор импорта

    Objective C

    @import Foundation;

    Доступность

    Доступный в OS X v10.2 и позже.

  • Вызывает метод получателя на указанном потоке с помощью режима по умолчанию.

    Объявление

    Objective C

    - (void)performSelector:(SEL)aSelector onThread:(NSThread *)thread withObject:(id)arg waitUntilDone:(BOOL)wait

    Параметры

    aSelector

    Селектор, идентифицирующий метод для вызова. Метод не должен иметь значительного возвращаемого значения и должен взять отдельный аргумент идентификатора типа или никакие параметры.

    thread

    Поток, на котором можно выполниться aSelector.

    arg

    Параметр для передачи методу, когда это вызывается. Передача nil если метод не берет параметр.

    wait

    Булевская переменная, указывающая, выполняются ли блоки текущего потока до окончания указанного селектора на получателе на указанном потоке. Указать YEStrue блокировать этот поток; иначе, указать NOfalse иметь этот возврат метода сразу.

    Если текущий поток и целевой поток являются тем же, и Вы указываете YEStrue для этого параметра селектор сразу выполняется на текущем потоке. Если Вы указываете NOfalse, этот метод ставит сообщение в очередь на цикле и возвратах выполнения потока, точно так же, как это делает для других потоков. Текущий поток должен тогда исключить из очереди и обработать сообщение, когда это имеет возможность сделать так.

    Обсуждение

    Можно использовать этот метод для передачи сообщений к другим потокам в приложении. Сообщение в этом случае является методом текущего объекта, который Вы хотите выполнить на целевом потоке.

    Этот метод ставит сообщение в очередь на цикле выполнения целевого потока с помощью выполненных режимов цикла по умолчанию — т.е. режимы, связанные с NSRunLoopCommonModes постоянный. Как часть его нормальной обработки цикла выполнения, целевой поток исключает сообщение из очереди (предполагающий, что это работает в одном из выполненных режимов цикла по умолчанию), и вызывает требуемый метод.

    Вы не можете отменить поставленное в очередь использование сообщений этого метода. Если Вы хотите опцию отмены сообщения на текущем потоке, необходимо использовать любого performSelector:withObject:afterDelay: или performSelector:withObject:afterDelay:inModes: метод.

    Специальные замечания

    Этот метод регистрируется в runloop его текущего контекста и зависит от этого runloop, выполняемый регулярно для выполнения правильно. Один общий контекст, где Вы могли бы вызвать этот метод и закончить тем, что регистрировались в runloop, автоматически не выполняющемся регулярно, будучи вызванным очередью отгрузки. При необходимости в этом типе функциональности при работе очереди отгрузки необходимо использовать dispatch_after и связанные методы для получения поведения Вы хотите.

    Оператор импорта

    Objective C

    @import Foundation;

    Доступность

    Доступный в OS X v10.5 и позже.

  • Вызывает метод получателя на указанном потоке с помощью указанных режимов.

    Объявление

    Objective C

    - (void)performSelector:(SEL)aSelector onThread:(NSThread *)thread withObject:(id)arg waitUntilDone:(BOOL)wait modes:(NSArray *)array

    Параметры

    aSelector

    Селектор, идентифицирующий метод для вызова. Это не должно иметь значительного возвращаемого значения и должно взять отдельный аргумент идентификатора типа или никакие параметры.

    thread

    Поток, на котором можно выполниться aSelector. Этот поток представляет целевой поток.

    arg

    Параметр для передачи методу, когда это вызывается. Передача nil если метод не берет параметр.

    wait

    Булевская переменная, указывающая, выполняются ли блоки текущего потока до окончания указанного селектора на получателе на указанном потоке. Указать YEStrue блокировать этот поток; иначе, указать NOfalse иметь этот возврат метода сразу.

    Если текущий поток и целевой поток являются тем же, и Вы указываете YEStrue для этого параметра селектор сразу выполняется. Если Вы указываете NOfalse, этот метод ставит сообщение в очередь и сразу возвращается, независимо от того, являются ли потоки тем же или отличающийся.

    array

    Массив строк, идентифицирующий режимы, в которых допустимо выполнить указанный селектор. Этот массив должен содержать по крайней мере одну строку. Если Вы указываете nil или пустой массив для этого параметра, этот метод возвращается, не выполняя указанный селектор. Для получения информации о выполненных режимах цикла посмотрите Циклы Выполнения в Поточной обработке Руководства по программированию.

    Обсуждение

    Можно использовать этот метод для передачи сообщений к другим потокам в приложении. Сообщение в этом случае является методом текущего объекта, который Вы хотите выполнить на целевом потоке.

    Этот метод ставит сообщение в очередь на цикле выполнения целевого потока с помощью режимов цикла выполнения, указанных в array параметр. Как часть его нормальной обработки цикла выполнения, целевой поток исключает сообщение из очереди (предполагающий, что это работает в одном из указанных режимов), и вызывает требуемый метод.

    Вы не можете отменить поставленное в очередь использование сообщений этого метода. Если Вы хотите опцию отмены сообщения на текущем потоке, необходимо использовать любого performSelector:withObject:afterDelay: или performSelector:withObject:afterDelay:inModes: метод вместо этого.

    Специальные замечания

    Этот метод регистрируется в runloop его текущего контекста и зависит от этого runloop, выполняемый регулярно для выполнения правильно. Один общий контекст, где Вы могли бы вызвать этот метод и закончить тем, что регистрировались в runloop, автоматически не выполняющемся регулярно, будучи вызванным очередью отгрузки. При необходимости в этом типе функциональности при работе очереди отгрузки необходимо использовать dispatch_after и связанные методы для получения поведения Вы хотите.

    Оператор импорта

    Objective C

    @import Foundation;

    Доступность

    Доступный в OS X v10.5 и позже.

  • Вызывает метод получателя на новом фоновом потоке.

    Объявление

    Objective C

    - (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg

    Параметры

    aSelector

    Селектор, идентифицирующий метод для вызова. Метод не должен иметь значительного возвращаемого значения и должен взять отдельный аргумент идентификатора типа или никакие параметры.

    arg

    Параметр для передачи методу, когда это вызывается. Передача nil если метод не берет параметр.

    Обсуждение

    Этот метод создает новый поток в Вашем приложении, помещая Ваше приложение в многопоточный режим, если это уже не было. Метод, представленный aSelector должен установить среду потока, как Вы были бы для любого другого нового потока в Вашей программе. Для получения дополнительной информации о том, как сконфигурировать и выполнить потоки, см. Руководство по программированию Поточной обработки.

    Оператор импорта

    Objective C

    @import Foundation;

    Доступность

    Доступный в OS X v10.5 и позже.

  • Отмены выполняют запросы, ранее зарегистрированные в performSelector:withObject:afterDelay: метод экземпляра.

    Объявление

    Swift

    class func cancelPreviousPerformRequestsWithTarget(_ aTarget: AnyObject)

    Objective C

    + (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget

    Параметры

    aTarget

    Цель для запросов ранее зарегистрировалась в performSelector:withObject:afterDelay: метод экземпляра.

    Обсуждение

    Все выполняют запросы, имеющие ту же цель aTarget отменяются. Этот метод удаляет, выполняют запросы только в текущем цикле выполнения, не всех циклах выполнения.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.2 и позже.

  • Отмены выполняют запросы, ранее зарегистрированные в performSelector:withObject:afterDelay:.

    Объявление

    Swift

    class func cancelPreviousPerformRequestsWithTarget(_ aTarget: AnyObject, selector aSelector: Selector, object anArgument: AnyObject?)

    Objective C

    + (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget selector:(SEL)aSelector object:(id)anArgument

    Параметры

    aTarget

    Цель для запросов ранее зарегистрировалась в performSelector:withObject:afterDelay: метод экземпляра

    aSelector

    Селектор для запросов ранее зарегистрировался в performSelector:withObject:afterDelay: метод экземпляра.

    anArgument

    Параметр за запросы ранее зарегистрировался в performSelector:withObject:afterDelay: метод экземпляра. Равенство параметра определяется с помощью isEqual:, таким образом, значение не должно быть тем же объектом, переданным первоначально. Передача nil соответствовать запрос на nil это было первоначально передано как параметр.

    Обсуждение

    Все выполняют запросы, отменяются, которые имеют ту же цель как aTarget, параметр как anArgument, и селектор как aSelector. Этот метод удаляет, выполняют запросы только в текущем цикле выполнения, не всех циклах выполнения.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Возвращает объект, к которому должны сначала быть направлены нераспознанные сообщения.

    Объявление

    Swift

    func forwardingTargetForSelector(_ aSelector: Selector) -> AnyObject?

    Objective C

    - (id)forwardingTargetForSelector:(SEL)aSelector

    Параметры

    aSelector

    Селектор для метода, который не реализует получатель.

    Возвращаемое значение

    Объект, к которому должны сначала быть направлены нераспознанные сообщения.

    Обсуждение

    Если объект реализует (или наследовался), этот метод, и возвращается не -nil (и не -self) результат, тот возвращенный объект используется в качестве нового объекта получателя и резюме отгрузки сообщения тому новому объекту. (Очевидно, если Вы возвращаетесь self от этого метода код просто попал бы в бесконечный цикл.)

    При реализации этого метода в некорневом классе если класс не имеет ничего для возврата для данного селектора тогда, необходимо возвратить результат вызова реализации super.

    Этот метод дает объекту шанс перенаправить неизвестное сообщение, отправленное в него перед намного более дорогим forwardInvocation: машинное оборудование вступает во владение. Когда Вы просто хотите перенаправить сообщения к другому объекту и можете быть порядком величины быстрее, чем регулярная передача, это полезно. Не полезно, где цель передачи состоит в том, чтобы получить NSInvocation или управлять параметрами или возвращаемым значением во время передачи.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

    Доступный в OS X v10.5 и позже.

  • Переопределенный подклассами для передачи сообщений к другим объектам.

    Объявление

    Objective C

    - (void)forwardInvocation:(NSInvocation *)anInvocation

    Параметры

    anInvocation

    Вызов для передачи.

    Обсуждение

    Когда объект отправляется сообщение, для которого он не имеет никакого соответствующего метода, система во время выполнения дает получателю возможность делегировать сообщение к другому получателю. Это делегирует сообщение путем создания NSInvocation объект, представляющий сообщение и отправляющий получатель a forwardInvocation: сообщение, содержащее это NSInvocation возразите как параметр. Получатель forwardInvocation: метод может тогда принять решение передать сообщение к другому объекту. (Если тот объект не может реагировать на сообщение также, этому также дадут шанс передать его.)

    forwardInvocation: сообщение таким образом позволяет объекту установить отношения с другими объектами, которые, для определенных сообщений, будут действовать от своего лица. Передающий объект, в некотором смысле, в состоянии «наследовать» некоторые характеристики объекта, к которому он передает сообщение.

    Реализация forwardInvocation: метод имеет две задачи:

    • Определять местоположение объекта, который может реагировать на сообщение, закодированное в anInvocation. Эта объектная потребность не быть тем же для всех сообщений.

    • Отправить сообщение в то объектное использование anInvocation. anInvocation будет содержать результат, и система во время выполнения извлечет и поставит этот результат к исходному отправителю.

    В простом случае, в котором объект передает сообщения всего одному месту назначения (такой как гипотетическое friend переменная экземпляра в примере ниже), a forwardInvocation: метод мог быть настолько простым:

    • - (void)forwardInvocation:(NSInvocation *)invocation
    • {
    • SEL aSelector = [invocation selector];
    • if ([friend respondsToSelector:aSelector])
    • [invocation invokeWithTarget:friend];
    • else
    • [super forwardInvocation:invocation];
    • }

    Сообщение, которое это передается, должно иметь постоянное число параметров; переменные числа параметров (в стиле printf()) не поддерживаются.

    Возвращаемое значение переадресованного сообщения возвращается к исходному отправителю. Все типы возвращаемых значений могут быть поставлены отправителю: id типы, структуры, двойная точность числа с плавающей точкой.

    Реализации forwardInvocation: метод может сделать, больше, чем просто передают сообщения. forwardInvocation: может, например, использоваться для консолидации кода, реагирующего на множество различных сообщений, таким образом избегая необходимости необходимости записать отдельный метод для каждого селектора. A forwardInvocation: метод мог бы также включить несколько других объектов в ответ на данное сообщение, а не передать его всего один.

    NSObjectреализация forwardInvocation: просто вызывает doesNotRecognizeSelector: метод; это не передает сообщений. Таким образом, если Вы принимаете решение не реализовать forwardInvocation:, отправка нераспознанных сообщений к объектам повысит исключения.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Доступность

    Доступный в OS X v10.0 и позже.

  • Динамично обеспечивает реализацию для данного селектора для метода класса.

    Объявление

    Swift

    class func resolveClassMethod(_ name: Selector) -> Bool

    Objective C

    + (BOOL)resolveClassMethod:(SEL)name

    Параметры

    name

    Имя селектора для разрешения.

    Возвращаемое значение

    YEStrue если метод был найден и добавил к получателю, иначе NOfalse.

    Обсуждение

    Этот метод позволяет Вам динамично обеспечивать реализацию для данного селектора. Посмотрите resolveInstanceMethod: для дальнейшего обсуждения.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

    Доступный в OS X v10.5 и позже.

    См. также

    + resolveInstanceMethod:

  • Динамично обеспечивает реализацию для данного селектора для метода экземпляра.

    Объявление

    Swift

    class func resolveInstanceMethod(_ name: Selector) -> Bool

    Objective C

    + (BOOL)resolveInstanceMethod:(SEL)name

    Параметры

    name

    Имя селектора для разрешения.

    Возвращаемое значение

    YEStrue если метод был найден и добавил к получателю, иначе NOfalse.

    Обсуждение

    Этот метод и resolveClassMethod: позвольте Вам динамично обеспечивать реализацию для данного селектора.

    Метод Objective C является просто функцией C, которые берут по крайней мере два параметра —self и _cmd. Используя class_addMethod функция, можно добавить функцию к классу как метод. Учитывая следующую функцию:

    • void dynamicMethodIMP(id self, SEL _cmd)
    • {
    • // implementation ....
    • }

    можно использовать resolveInstanceMethod: динамично добавить его к классу как метод (вызванный resolveThisMethodDynamically) как это:

    • + (BOOL) resolveInstanceMethod:(SEL)aSEL
    • {
    • if (aSEL == @selector(resolveThisMethodDynamically))
    • {
    • class_addMethod([self class], aSEL, (IMP) dynamicMethodIMP, "v@:");
    • return YES;
    • }
    • return [super resolveInstanceMethod:aSel];
    • }

    Специальные замечания

    Этот метод вызывают, прежде чем передающий механизм Objective C вызывается. Если respondsToSelector: или instancesRespondToSelector: вызывается, динамическому преобразователю метода дают возможность обеспечить IMP для данного селектора сначала.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

    Доступный в OS X v10.5 и позже.

    См. также

    + resolveClassMethod:

  • Дескрипторы обмениваются сообщениями, получатель не распознает.

    Объявление

    Swift

    func doesNotRecognizeSelector(_ aSelector: Selector)

    Objective C

    - (void)doesNotRecognizeSelector:(SEL)aSelector

    Параметры

    aSelector

    Селектор, идентифицирующий метод, не реализованный или распознанный получателем.

    Обсуждение

    Система во время выполнения вызывает этот метод каждый раз, когда объект получает aSelector сообщение это не может ответить на или вперед. Этот метод, в свою очередь, повышения NSInvalidArgumentException, и генерирует сообщение об ошибке.

    Любой doesNotRecognizeSelector: сообщения обычно отправляются только системой во время выполнения. Однако они могут использоваться в коде программы, чтобы препятствовать тому, чтобы был наследован метод. Например, NSObject подкласс мог бы отказаться copy или init метод путем перереализации его для включения a doesNotRecognizeSelector: сообщение следующим образом:

    • - (id)copy
    • {
    • [self doesNotRecognizeSelector:_cmd];
    • }

    _cmd переменная является скрытым параметром, переданным каждому методу, который является текущим селектором; в этом примере это идентифицирует селектор для copy метод. Этот код препятствует тому, чтобы экземпляры подкласса ответили на copy сообщения или суперклассы от передачи copy сообщения — несмотря на то, что respondsToSelector: все еще сообщит, что получатель имеет доступ к a copy метод.

    При переопределении этого метода необходимо вызвать super или повышение NSInvalidArgumentException исключение в конце Вашей реализации. Другими словами, этот метод не должен обычно возвращаться; это должно всегда приводить к выданному исключению.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

    Доступный в OS X v10.0 и позже.

    См. также

    – forwardInvocation:

  • Переопределенный подклассами для замены другим объектом вместо объекта, декодировавшегося и впоследствии получившего это сообщение.

    Объявление

    Swift

    func awakeAfterUsingCoder(_ aDecoder: NSCoder) -> AnyObject?

    Objective C

    - (id)awakeAfterUsingCoder:(NSCoder *)aDecoder

    Параметры

    aDecoder

    Декодер раньше декодировал получатель.

    Возвращаемое значение

    Получатель или другой объект занять место объекта, декодировавшегося и впоследствии получившего это сообщение.

    Обсуждение

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

    Этот метод вызывается NSCoder. NSObjectреализация просто возвращается self.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.0 и позже.

    См. также

    – classForCoder
    – replacementObjectForCoder:
    initWithCoder: (NSCoding протокол)

  • Переопределенный подклассами для замены классом кроме ее собственного во время архивации.

    Объявление

    Swift

    var classForArchiver: AnyClass? { get }

    Objective C

    @property(readonly) Class classForArchiver

    Возвращаемое значение

    Класс для заменения собственный класс получателя во время архивации.

    Обсуждение

    Этот метод вызывается NSArchiver. Это позволяет специализированное поведение для архивации — например, частные подклассы кластера класса заменяют именем своего общедоступного суперкласса, будучи заархивированным.

    NSObjectреализация возвращает объект, возвращенный classForCoder. Переопределение classForCoder добавить общее поведение кодирования.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • classForCoder classForCoder Свойство

    Переопределенный подклассами для замены классом кроме его собственного во время кодирования. (только для чтения)

    Объявление

    Swift

    var classForCoder: AnyClass { get }

    Objective C

    @property(readonly) Class classForCoder

    Обсуждение

    Этот метод вызывается NSCoder. NSObjectреализация возвращает класс получателя. Частные подклассы кластера класса заменяют именем своего общедоступного суперкласса, будучи заархивированным.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Переопределенный подклассами для заменения новым классом экземпляры во время включенной архивации.

    Объявление

    Swift

    var classForKeyedArchiver: AnyClass? { get }

    Objective C

    @property(readonly) Class classForKeyedArchiver

    Обсуждение

    Объект будет закодирован, как будто это был элемент возвращенного класса. Результаты этого метода переопределяются именем класса кодера и именем экземпляра к таблицам кодирования класса. Если nil возвращается, результат этого метода проигнорирован.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.2 и позже.

  • Переопределенный для возврата имен классов, которые могут использоваться для декодирования объектов, если их класс недоступен.

    Объявление

    Swift

    class func classFallbacksForKeyedArchiver() -> [AnyObject]

    Objective C

    + (NSArray *)classFallbacksForKeyedArchiver

    Возвращаемое значение

    Массив NSString объекты, указывающие имена классов в предпочтительном порядке на разархивирование

    Обсуждение

    NSKeyedArchiver вызовы этот метод и хранилища результат в архиве. Если фактический класс объекта не существует во время разархивирования, NSKeyedUnarchiver проходит через сохраненный список классов и использует первый, делающий существует как класс замены для декодирования объекта. Реализация по умолчанию этого метода возвраты nil.

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

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.4 и позже.

  • Переопределенный подклассами для замены новым классом во время включенного разархивирования.

    Объявление

    Swift

    class func classForKeyedUnarchiver() -> AnyClass

    Objective C

    + (Class)classForKeyedUnarchiver

    Возвращаемое значение

    Класс для заменения получатель во время включенного разархивирования.

    Обсуждение

    Во время включенного разархивирования экземпляры получателя будут декодироваться как элементы возвращенного класса. Этот метод переопределяет результаты имени класса декодера и имени экземпляра к таблицам кодирования класса.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.2 и позже.

  • Переопределенный подклассами для замены классом кроме его собственного для кодирования распределения.

    Объявление

    Objective C

    @property(readonly) Class classForPortCoder

    Возвращаемое значение

    Класс для заменения получатель в кодировании распределения.

    Обсуждение

    Этот метод позволяет специализированное поведение для распределенных объектов — переопределение classForCoder добавить общее поведение кодирования. Этот метод вызывается NSPortCoder. NSObjectреализация возвращает класс, возвращенный classForCoder.

    Оператор импорта

    Objective C

    @import Foundation;

    Доступность

    Доступный в OS X v10.0 и позже.

  • Переопределенный подклассами для заменения другим объектом себя во время архивации.

    Объявление

    Swift

    func replacementObjectForArchiver(_ anArchiver: NSArchiver) -> AnyObject?

    Objective C

    - (id)replacementObjectForArchiver:(NSArchiver *)anArchiver

    Параметры

    anArchiver

    archiver создание архива.

    Возвращаемое значение

    Объект заменить получатель во время архивации.

    Обсуждение

    Этот метод вызывается NSArchiver. NSObjectреализация возвращает объект, возвращенный replacementObjectForCoder:.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.0 и позже.

    См. также

    – classForArchiver

  • Переопределенный подклассами для заменения другим объектом себя во время кодирования.

    Объявление

    Swift

    func replacementObjectForCoder(_ aCoder: NSCoder) -> AnyObject?

    Objective C

    - (id)replacementObjectForCoder:(NSCoder *)aCoder

    Параметры

    aCoder

    Кодер, кодирующий получатель.

    Возвращаемое значение

    Объект кодирует вместо получателя (если отличающийся).

    Обсуждение

    Объект мог бы закодировать себя в архив, но закодировать прокси для себя, если он кодируется для распределения. Этот метод вызывается NSCoder. NSObjectвозвраты реализации self.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Переопределенный подклассами для заменения другим объектом себя во время включенной архивации.

    Объявление

    Swift

    func replacementObjectForKeyedArchiver(_ archiver: NSKeyedArchiver) -> AnyObject?

    Objective C

    - (id)replacementObjectForKeyedArchiver:(NSKeyedArchiver *)archiver

    Параметры

    archiver

    Включенный archiver создание архива.

    Возвращаемое значение

    Объект кодирует вместо получателя (если отличающийся).

    Обсуждение

    Этот метод вызывают, только если никакая замена, отображающаяся для объекта, не была установлена в кодере (например, вследствие предыдущего вызова replacementObjectForKeyedArchiver: к тому объекту).

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.2 и позже.

    См. также

    – classForKeyedArchiver

  • Переопределенный подклассами для заменения другим объектом или копией для себя во время кодирования распределения.

    Объявление

    Objective C

    - (id)replacementObjectForPortCoder:(NSPortCoder *)aCoder

    Параметры

    aCoder

    Кодер порта, кодирующий получатель.

    Возвращаемое значение

    Объект кодирует вместо получателя (если отличающийся).

    Обсуждение

    Этот метод вызывается NSPortCoder. NSObjectреализация возвращается NSDistantObject объект для объекта, возвращенного replacementObjectForCoder:, то, чтобы позволять все объекты быть распределенным по доверенности как значение по умолчанию. Однако, если replacementObjectForCoder: возвраты nil, NSObjectреализация также возвратится nil.

    Подклассы, хотящие быть переданными копией вместо ссылкой, должны переопределить этот метод и возврат self. Следующий пример показывает, как поддерживать замену объекта и копией и ссылкой:

    • - (id)replacementObjectForPortCoder:(NSPortCoder *)encoder {
    • return [encoder isByref] ? [super replacementObjectForPortCoder:encoder] : self;
    • }

    Оператор импорта

    Objective C

    @import Foundation;

    Доступность

    Доступный в OS X v10.0 и позже.

    См. также

    – classForPortCoder

  • Устанавливает номер версии получателя.

    Объявление

    Swift

    class func setVersion(_ aVersion: Int)

    Objective C

    + (void)setVersion:(NSInteger)aVersion

    Параметры

    aVersion

    Номер версии для получателя.

    Обсуждение

    Когда экземпляры класса должны быть заархивированы и снова использованы позже, номер версии полезен. Версия по умолчанию 0.

    Специальные замечания

    Номер версии применяется к NSArchiver/NSUnarchiver, но не к NSKeyedArchiver/NSKeyedUnarchiver. Включенный archiver не кодирует номера версии класса.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.0 и позже.

    См. также

    + версия

  • Возвращает номер версии, присвоенный классу.

    Объявление

    Swift

    class func version() -> Int

    Objective C

    + (NSInteger)version

    Возвращаемое значение

    Номер версии присвоился к классу.

    Обсуждение

    Если никакая версия не была установлена, значение по умолчанию 0.

    Номера версий необходимы для декодирования или разархивирования, таким образом, более старые версии объекта могут обнаруживаться и декодироваться правильно.

    Предостережение должно быть взято при получении версии из NSCoding протокол или другие методы. Используйте имя класса явно при получении номера версии класса:

    • version = [MyClass version];

    Просто не отправлять version к возвращаемому значению класса — номер версии подкласса может быть возвращен вместо этого.

    Специальные замечания

    Номер версии применяется к NSArchiver/NSUnarchiver, но не к NSKeyedArchiver/NSKeyedUnarchiver. Включенный archiver не кодирует номера версии класса.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.0 и позже.

    См. также

    + setVersion:
    versionForClassName: (NSCoder)

  • Возвращает массив NSString объекты, содержащие имена неизменных значений, которые содержат экземпляры класса получателя.

    Объявление

    Swift

    var attributeKeys: [AnyObject] { get }

    Objective C

    @property(readonly, copy) NSArray *attributeKeys

    Возвращаемое значение

    Массив NSString объекты, содержащие имена неизменных значений, которые содержат экземпляры класса получателя.

    Обсуждение

    NSObjectреализация attributeKeys просто вызовы [[self classDescription] attributeKeys]. Для использования реализации по умолчанию необходимо поэтому реализовать и зарегистрироваться, подходящее описание класса — посмотрите NSClassDescription. Описание класса, описывающее Объекты видеоклипа, могло, например, возвратить ключи атрибута title, dateReleased, и rating.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Возвращает объект, содержащий информацию об атрибутах и отношениях класса получателя.

    Объявление

    Swift

    @NSCopying var classDescription: NSClassDescription { get }

    Objective C

    @property(readonly, copy) NSClassDescription *classDescription

    Возвращаемое значение

    Объект, содержащий информацию об атрибутах и отношениях класса получателя.

    Обсуждение

    NSObjectреализация просто вызывает [NSClassDescription classDescriptionForClass:[self class]]. Посмотрите NSClassDescription для получения дополнительной информации.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Для данного ключа, определяющего имя отношения от класса получателя до другого класса, возвращает имя отношения от другого класса до класса получателя.

    Объявление

    Swift

    func inverseForRelationshipKey(_ relationshipKey: String!) -> String!

    Objective C

    - (NSString *)inverseForRelationshipKey:(NSString *)relationshipKey

    Параметры

    relationshipKey

    Имя отношения от класса получателя до другого класса.

    Возвращаемое значение

    Имя отношения, которое является инверсией названного отношения получателя relationshipKey.

    Обсуждение

    NSObjectреализация inverseForRelationshipKey: просто вызывает [[self classDescription] inverseForRelationshipKey:relationshipKey]. Для использования реализации по умолчанию необходимо поэтому реализовать и зарегистрироваться, подходящее описание класса — посмотрите NSClassDescription.

    Например, предположите, что классу Сотрудника назвали отношение department к классу Отдела и тому Отделу вызвали отношение employees Сотруднику. Оператор:

    • employee inverseForRelationshipKey:@"department"];

    возвращает строку employees.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Массив возвратов, содержащий ключи для к - много свойств отношения получателя.

    Объявление

    Swift

    var toManyRelationshipKeys: [AnyObject] { get }

    Objective C

    @property(readonly, copy) NSArray *toManyRelationshipKeys

    Возвращаемое значение

    Массив, содержащий ключи для к - много свойств отношения получателя (если таковые имеются).

    Обсуждение

    NSObjectреализация просто вызывает [[self classDescription] toManyRelationshipKeys]. Для использования реализации по умолчанию необходимо поэтому реализовать и зарегистрироваться, подходящее описание класса — посмотрите NSClassDescription.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Возвращает ключи для к - свойства отношения получателя, если таковые имеются.

    Объявление

    Swift

    var toOneRelationshipKeys: [AnyObject] { get }

    Objective C

    @property(readonly, copy) NSArray *toOneRelationshipKeys

    Возвращаемое значение

    Массив, содержащий ключи для к - свойства отношения получателя.

    Обсуждение

    NSObjectреализация toOneRelationshipKeys просто вызывает [[self classDescription] toOneRelationshipKeys]. Для использования реализации по умолчанию необходимо поэтому реализовать и зарегистрироваться, подходящее описание класса — посмотрите NSClassDescription.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Возвращает код типа события Apple получателя, как сохраненный в NSScriptClassDescription объект для класса объекта.

    Объявление

    Swift

    var classCode: FourCharCode { get }

    Objective C

    @property(readonly) FourCharCode classCode

    Возвращаемое значение

    Код типа события Apple получателя, как сохраненный в NSScriptClassDescription объект для класса объекта.

    Обсуждение

    Этот метод вызывается классами поддержки сценариев Какао.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Возвращает строку, содержащую имя класса.

    Объявление

    Swift

    var className: String { get }

    Objective C

    @property(readonly, copy) NSString *className

    Возвращаемое значение

    Строка, содержащая имя класса.

    Обсуждение

    Этот метод вызывается классами поддержки сценариев Какао.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Создает и возвращает один или несколько объектов сценариев, которые будут вставлены в указанное отношение путем копирования переданного - в значении и установки свойств в скопированном объекте или объектах.

    Объявление

    Swift

    func copyScriptingValue(_ value: AnyObject!, forKey key: String, withProperties properties: [NSObject : AnyObject]!) -> AnyObject?

    Objective C

    - (id)copyScriptingValue:(id)value forKey:(NSString *)key withProperties:(NSDictionary *)properties

    Параметры

    value

    Объект или объекты, которые будут скопированы. Тип должен соответствовать тип свойства, идентифицированного key. (См. также раздел Discussion.)

    Например, если свойство к - многие отношение, value всегда будет массив объектов, которые будут скопированы, и этот метод должен поэтому возвратить массив объектов.

    key

    Ключ, идентифицирующий отношение, в которое можно вставить скопированный объект или объекты.

    properties

    Свойства, которые будут установлены в скопированном объекте или объектах. Полученный из «со свойствами» параметр a duplicate команда. (См. также раздел Discussion.)

    Возвращаемое значение

    Скопированный объект или объекты. Возвраты nil если происходит ошибка.

    Обсуждение

    Можно переопределить copyScriptingValue метод для взятия на себя большего количества управления, когда заявление послано a duplicate команда. Этот метод вызывается на предполагаемый контейнер скопированного объекта или объектов. properties получены из with properties параметр duplicate команда. Возвращенные объекты или объекты тогда вставляются в контейнер с помощью кодирования значения ключа.

    Когда этот метод будет вызван Какао, ни значение, ни свойства еще не будут принуждены с помощью NSScriptKeyValueCoding метод coerceValue:forKey:. Для sdef-заявленного scriptability, однако, типы переданного - в объектах надежно соответствуют соответствующие sdef объявления.

    Реализация по умолчанию этого метода копии, пишущие сценарий объектов путем отправки copyWithZone: к объекту или объектам, указанным value. Вы переопределяете этот метод для ситуаций, где это не достаточно, такой как в Базовых Применениях данных, в которых новые объекты должны быть инициализированы с [NSManagedObject initWithEntity:insertIntoManagedObjectContext:].

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.5 и позже.

  • Создает и возвращает экземпляр scriptable класса, устанавливая его содержание и свойства, для вставки в отношение, идентифицированное ключом.

    Объявление

    Swift

    func newScriptingObjectOfClass(_ class: AnyClass!, forValueForKey key: String, withContentsValue contentsValue: AnyObject?, properties properties: [NSObject : AnyObject]!) -> AnyObject?

    Objective C

    - (id)newScriptingObjectOfClass:(Class)class forValueForKey:(NSString *)key withContentsValue:(id)contentsValue properties:(NSDictionary *)properties

    Параметры

    class

    Класс scriptable объекта, который будет создаваться.

    key

    Ключ, идентифицирующий отношение, в которое будет вставлен новый объект класса.

    contentsValue

    Указывает содержание объекта, который будет создаваться. Это может быть nil. (См. также раздел Discussion.)

    properties

    Свойства, которые будут установлены в новом объекте. (См. также раздел Discussion.)

    Возвращаемое значение

    Новый объект. Возвраты nil если происходит ошибка.

    Обсуждение

    Можно переопределить newScriptingObjectOfClass метод для взятия на себя большего количества управления, когда заявление послано a make команда. Этот метод вызывается на предполагаемый контейнер нового объекта. contentsValue и properties получены из with contents и with properties параметры make команда. Возвращенные объекты или объекты тогда вставляются в контейнер с помощью кодирования значения ключа.

    Когда этот метод будет вызван Какао, ни значение содержания, ни свойства еще не будут принуждены с помощью NSScriptKeyValueCoding метод coerceValue:forKey:. Для sdef-заявленного scriptability, однако, типы переданного - в объектах надежно соответствуют соответствующие sdef объявления.

    Реализация по умолчанию этого метода создает новые объекты сценариев путем отправки alloc к классу и init к полученному объекту. Вы переопределяете этот метод для ситуаций, где это не достаточно, такой как в Базовых Применениях данных, в которых новые объекты должны быть инициализированы с [NSManagedObject initWithEntity:insertIntoManagedObjectContext:].

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.5 и позже.

  • Возвраты NSString- включенный словарь scriptable свойств получателя.

    Объявление

    Swift

    var scriptingProperties: [NSObject : AnyObject]!

    Objective C

    @property(copy) NSDictionary *scriptingProperties

    Возвращаемое значение

    NSString- включенный словарь scriptable свойств получателя, включая всех тех, которые объявляются как Атрибуты и ToOneRelationships в .scriptSuite записи списка свойств для класса и его суперклассов сценариев, за исключением, включенных «scriptingProperties». Каждый ключ в словаре должен быть идентичен ключу для Атрибута или ToOneRelationship. Значения словаря должны быть объектами Objective C, которые конвертируемы к NSAppleEventDescriptor объекты.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.2 и позже.

    См. также

    – setScriptingProperties:

  • Данный NSString- включенный словарь, наборы один или несколько scriptable свойства получателя.

    Объявление

    Swift

    var scriptingProperties: [NSObject : AnyObject]!

    Objective C

    @property(copy) NSDictionary *scriptingProperties

    Параметры

    properties

    Словарь, содержащий один или несколько scriptable свойства получателя. Допустимые ключи для словаря включают ключи для неатрибутов «только для чтения» и ToOneRelationships в .scriptSuite записи списка свойств для класса объекта и его суперклассов сценариев и никаких других. Значения словаря являются объектами Objective C.

    Обсуждение

    Invokers этого метода, должно быть, уже сделал любую необходимую проверку, чтобы гарантировать, что словарь свойств включает только записи для заявленного, устанавливаемого, Атрибутов и ToOneRelationships. Реализации этого метода, как ожидают, не проверят законность ключей в переданном - в словаре, но должны быть в состоянии принять словари, не содержащие записи для каждого scriptable свойства. Реализации этого метода должны выполнить тип, проверяющий значения словаря.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.2 и позже.

    См. также

    – scriptingProperties

  • Учитывая объектный спецификатор, возвращает указанный объект или объекты в контейнере получения.

    Объявление

    Swift

    func scriptingValueForSpecifier(_ objectSpecifier: NSScriptObjectSpecifier!) -> AnyObject!

    Objective C

    - (id)scriptingValueForSpecifier:(NSScriptObjectSpecifier *)objectSpecifier

    Параметры

    objectSpecifier

    Объектный спецификатор, который будет оценен.

    Возвращаемое значение

    Указанный объект или объекты в контейнере получения.

    Этот метод мог бы успешно возвратить объект, массив объектов, или nil, В зависимости от вида объектного спецификатора. Поскольку nil допустимое возвращаемое значение, отказ сообщен путем вызова объектного спецификатора setEvaluationError: метод перед возвратом.

    Обсуждение

    Можно переопределить этот метод для настройки оценки объектных спецификаторов, не требуя, чтобы контейнер сценариев составил индексы для содержащих в нем объектов, естественно не имеющих индексов (как может иметь место, если Вы реализуете indicesOfObjectsByEvaluatingObjectSpecifier: вместо этого).

    Ваше переопределение этого метода не должно также вызывать ни один из NSScriptCommand сигнальные методы ошибки, хотя это может, для записи очень определенной информации. NSUnknownKeySpecifierError и NSInvalidIndexSpecifierError числа являются особенными, в котором Какао может продолжать оценивать внешний спецификатор, если с ними встречаются для удобства сценаристов.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.5 и позже.

  • Сборщик «мусора» вызывает этот метод на получатель перед избавлением от памяти, которую это использует.

    Сборка «мусора» осуждается в OS X v10.8; вместо этого, необходимо использовать Автоматический Подсчет ссылок — посмотрите Переход к Информации о версии ARC.

    Объявление

    Swift

    func finalize()

    Objective C

    - (void)finalize

    Обсуждение

    Сборщик «мусора» вызывает этот метод на получатель перед избавлением от памяти, которую это использует. Когда сборка «мусора» включена, этот метод вызывается вместо dealloc.

    Можно переопределить этот метод для отказа от, снабжает получатель ресурсами, получил, как показано в следующем примере:

    • - (void)finalize {
    • if (log_file != NULL) {
    • fclose(log_file);
    • log_file = NULL;
    •     }
    • [super finalize];
    • }

    Как правило, однако, Вы призваны оставить ресурсы до завершения если вообще возможный. Для получения дополнительной информации посмотрите Реализацию завершить Метода.

    Специальные замечания

    Это - ошибка сохранить self в новый или существующий живой объект (в разговорной речи известный как «восстановление»), который подразумевает, что этот метод вызовут только один раз. Однако получатель может быть передан после завершения другими объектами, также завершаемыми в это время, таким образом, Ваше переопределение должно принять меры против будущего использования ресурсов, в отношении которых предъявили претензии, как показано log_file = NULL оператор в примере. finalize сам метод никогда не будет вызываться несколько раз для данного объекта.

    Оператор импорта

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

    Доступный в OS X v10.4 и позже.

    См. также

    – dealloc

  • Заставляет класс получения изображать из себя указанный суперкласс.

    Объявление

    Objective C

    + (void)poseAsClass:(Class)aClass

    Параметры

    aClass

    Суперкласс получателя.

    Обсуждение

    Получатель занимает место aClass в иерархии наследования; все сообщения отправили к aClass будет фактически поставлен получателю. Получатель должен быть определен как подкласс aClass. Это не может объявить новые собственные переменные экземпляра, но это может определить новые методы и переопределенные методы, определенные в aClass. poseAsClass: сообщение должно быть отправлено, прежде чем любые сообщения отправляются в aClass и перед любыми экземплярами aClass создаются.

    Это средство позволяет Вам добавлять методы к существующему классу путем определения их в подклассе и наличия замены подкласса для существующего класса. Новые определения метода будут наследованы всеми подклассами суперкласса. Необходимо соблюдать осторожность, чтобы гарантировать, чтобы унаследованные методы не генерировали ошибки.

    Подкласс, изображающий из себя его суперкласс все еще, наследовался от суперкласса. Поэтому ни одна из функциональности суперкласса не потеряна в замене. Изложение не изменяет определение ни одного класса.

    Изложение полезно как средство отладки, но определения категории являются менее сложным и более эффективным способом увеличить существующие классы. Изложение допускает только две возможности, отсутствующие в категориях:

    • Метод, определенный классом изложения, может переопределить любой метод, определенный его суперклассом. Методы, определенные в категориях, могут заменить методы, определенные в надлежащем классе, но они не могут надежно заменить методы, определенные в других категориях. Если две категории определят тот же метод, то одно из определений будет преобладать, но нет никакой гарантии который.

    • Метод, определенный классом изложения, может через сообщение к super, включите метод суперкласса, который это переопределяет. Метод, определенный в категории, может заменить метод, определенный в другом месте классом, но это не может включить метод, который это заменяет.

    Специальные замечания

    Изложение осуждается в OS X v10.5. poseAsClass: метод не доступен в 64-разрядных приложениях в  OS X v10.5.

    Оператор импорта

    Objective C

    @import Foundation;

    Доступность

    Доступный в OS X v10.0 и позже.

    Осуждаемый в OS X v10.5.

    Не доступный 64-разрядным приложениям.