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

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

Разработчик

Ссылка времени выполнения Objective C

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

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

Ссылка времени выполнения Objective C

Этот документ описывает Objective C OS X 2,0 функции поддержки библиотеки времени выполнения и структуры данных. Функции реализованы в совместно используемой библиотеке, найденной в /usr/lib/libobjc.A.dylib. Эта совместно используемая библиотека предоставляет поддержку для динамических свойств языка Objective C, и как таковой соединяется со всеми приложениями Objective C.

Эта ссылка полезна прежде всего для разработки уровней моста между Objective C и другими языками, или для низкоуровневой отладки. Вы обычно не должны пользоваться библиотекой времени выполнения Objective C непосредственно при программировании в Objective C.

Реализация OS X библиотеки времени выполнения Objective C уникальна для Mac. Для других платформ Набор Компилятора GNU предоставляет различной реализации подобный API. Этот документ касается только реализации OS X.

Низкоуровневое время выполнения Objective C API значительно обновляется в версии 10.5 OS X. Много функций и все существующие структуры данных заменяются новыми функциями. Старые функции и структуры осуждаются в 32-разрядном и отсутствующем в 64-разрядном режиме. API ограничивает несколько значений к 32-разрядному ints даже в 64-разрядном режиме — количество класса, количество протокола, методы на класс, ivars на класс, параметры на метод, sizeof (все параметры) на метод и номер версии класса. Кроме того, новый Objective C ABI (не описанный здесь) далее ограничивает sizeof(anInstance) к 32 битам, и три других значения к 24 битам — методы на класс, ivars на класс и sizeof (единственный ivar). Наконец, устаревшее NXHashTable и NXMapTable ограничиваются 4 миллиардами элементов.

«Осуждаемый» ниже средних значений, “осуждаемых в версии 10.5 OS X для 32-разрядного кода и запрещенных для 64-разрядного кода”.

Кто должен считать этот документ

Документ предназначается для читателей, которые могли бы интересоваться приобретением знаний о времени выполнения Objective C.

Поскольку это не документ о C, это принимает некоторое предшествующее знакомство с тем языком. Однако это не должно быть обширное знакомство.

Функции

  • Возвращает имя класса.

    Объявление

    Swift

    func class_getName(_ cls: AnyClass!) -> UnsafePointer<Int8>

    Objective C

    const char * class_getName ( Class cls );

    Параметры

    cls

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

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

    Имя класса или пустая строка, если cls Nil.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Возвращает суперкласс класса.

    Объявление

    Swift

    func class_getSuperclass(_ cls: AnyClass!) -> AnyClass!

    Objective C

    Class class_getSuperclass ( Class cls );

    Параметры

    cls

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

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

    Суперкласс класса, или Nil если cls корневой класс, или Nil если cls Nil.

    Обсуждение

    Необходимо обычно использовать NSObject superclass метод вместо этой функции.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Устанавливает суперкласс данного класса.

    Объявление

    Objective C

    Class class_setSuperclass ( Class cls, Class newSuper );

    Параметры

    cls

    Класс, суперкласс которого Вы хотите установить.

    newSuper

    Новый суперкласс для cls.

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

    Старый суперкласс для cls.

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

    Вы не должны использовать эту функцию.

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

    Objective C

    @import ObjectiveC;

    Доступность

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

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

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

    Объявление

    Swift

    func class_isMetaClass(_ cls: AnyClass!) -> Bool

    Objective C

    BOOL class_isMetaClass ( Class cls );

    Параметры

    cls

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

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

    YEStrue если cls метакласс, NOfalse если cls неметакласс, NOfalse если cls Nil.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Возвращает размер экземпляров класса.

    Объявление

    Swift

    func class_getInstanceSize(_ cls: AnyClass!) -> UInt

    Objective C

    size_t class_getInstanceSize ( Class cls );

    Параметры

    cls

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

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

    Размер в байтах экземпляров класса cls, или 0 если cls Nil.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Возвраты Ivar для указанной переменной экземпляра данного класса.

    Объявление

    Swift

    func class_getInstanceVariable(_ cls: AnyClass!, _ name: UnsafePointer<Int8>) -> Ivar

    Objective C

    Ivar class_getInstanceVariable ( Class cls, const char *name );

    Параметры

    cls

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

    name

    Имя определения переменной экземпляра для получения.

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

    Указатель на Ivar структура данных, содержащая информацию о переменной экземпляра, указанной name.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Возвраты Ivar для указанной переменной класса данного класса.

    Объявление

    Swift

    func class_getClassVariable(_ cls: AnyClass!, _ name: UnsafePointer<Int8>) -> Ivar

    Objective C

    Ivar class_getClassVariable ( Class cls, const char *name );

    Параметры

    cls

    Определение класса, переменную класса которого Вы хотите получить.

    name

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

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

    Указатель на Ivar структура данных, содержащая информацию о переменной класса, указанной name.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Добавляет новая переменная экземпляра к классу.

    Объявление

    Swift

    func class_addIvar(_ cls: AnyClass!, _ name: UnsafePointer<Int8>, _ size: UInt, _ alignment: UInt8, _ types: UnsafePointer<Int8>) -> Bool

    Objective C

    BOOL class_addIvar ( Class cls, const char *name, size_t size, uint8_t alignment, const char *types );

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

    YEStrue если переменная экземпляра была добавлена успешно, иначе NOfalse (например, класс уже содержит переменную экземпляра с тем именем).

    Обсуждение

    Эта функция может только быть вызвана после objc_allocateClassPair и прежде objc_registerClassPair. Добавление переменной экземпляра к существующему классу не поддерживается.

    Класс не должен быть метаклассом. Добавление переменной экземпляра к метаклассу не поддерживается.

    Минимальное выравнивание переменной экземпляра в байтах 1<<align. Минимальное выравнивание переменной экземпляра зависит от типа ivar и архитектуры машины. Для переменных любого типа указателя, передачи log2(sizeof(pointer_type)).

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Описывает переменные экземпляра, объявленные классом.

    Объявление

    Swift

    func class_copyIvarList(_ cls: AnyClass!, _ outCount: UnsafeMutablePointer<UInt32>) -> UnsafeMutablePointer<Ivar>

    Objective C

    Ivar * class_copyIvarList ( Class cls, unsigned int *outCount );

    Параметры

    cls

    Класс для проверки.

    outCount

    По возврату, содержит длину возвращенного массива. Если outCount NULL, длина не возвращается.

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

    Массив указателей типа Ivar, описывающий переменные экземпляра, объявляется классом. Любые переменные экземпляра, объявленные суперклассами, не включены. Массив содержит *outCount указатели, сопровождаемые a NULL разделитель. Необходимо освободить массив с free().

    Если класс не объявляет переменных экземпляра, или cls Nil, NULL возвращается и *outCount 0.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Возвращает описание Ivar расположение для данного класса.

    Объявление

    Swift

    func class_getIvarLayout(_ cls: AnyClass!) -> UnsafePointer<UInt8>

    Objective C

    const uint8_t * class_getIvarLayout ( Class cls );

    Параметры

    cls

    Класс для проверки.

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

    Описание Ivar расположение для cls.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Наборы Ivar расположение для данного класса.

    Объявление

    Swift

    func class_setIvarLayout(_ cls: AnyClass!, _ layout: UnsafePointer<UInt8>)

    Objective C

    void class_setIvarLayout ( Class cls, const uint8_t *layout );

    Параметры

    cls

    Класс для изменения.

    layout

    Расположение Ivars для cls.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Возвращает описание расположения слабых Ivars для данного класса.

    Объявление

    Swift

    func class_getWeakIvarLayout(_ cls: AnyClass!) -> UnsafePointer<UInt8>

    Objective C

    const uint8_t * class_getWeakIvarLayout ( Class cls );

    Параметры

    cls

    Класс для проверки.

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

    Описание расположения слабого Ivars для cls.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Устанавливает расположение для слабого Ivars для данного класса.

    Объявление

    Swift

    func class_setWeakIvarLayout(_ cls: AnyClass!, _ layout: UnsafePointer<UInt8>)

    Objective C

    void class_setWeakIvarLayout ( Class cls, const uint8_t *layout );

    Параметры

    cls

    Класс для изменения.

    layout

    Расположение слабого Ivars для cls.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Возвращает свойство с именем данного класса.

    Объявление

    Swift

    func class_getProperty(_ cls: AnyClass!, _ name: UnsafePointer<Int8>) -> objc_property_t

    Objective C

    objc_property_t class_getProperty ( Class cls, const char *name );

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

    Указатель типа objc_property_t описание свойства, или NULL если класс не объявляет свойство с тем именем, или NULL если cls Nil.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Описывает свойства, объявленные классом.

    Объявление

    Swift

    func class_copyPropertyList(_ cls: AnyClass!, _ outCount: UnsafeMutablePointer<UInt32>) -> UnsafeMutablePointer<objc_property_t>

    Objective C

    objc_property_t * class_copyPropertyList ( Class cls, unsigned int *outCount );

    Параметры

    cls

    Класс Вы хотите проверить.

    outCount

    По возврату, содержит длину возвращенного массива. Если outCount NULL, длина не возвращается.

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

    Массив указателей типа objc_property_t описание свойств объявляется классом. Любые свойства, объявленные суперклассами, не включены. Массив содержит *outCount указатели, сопровождаемые a NULL разделитель. Необходимо освободить массив с free().

    Если cls не объявляет свойств, или cls Nil, возвраты NULL и *outCount 0.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Добавляет новый метод к классу с именем и реализацией.

    Объявление

    Swift

    func class_addMethod(_ cls: AnyClass!, _ name: Selector, _ imp: IMP, _ types: UnsafePointer<Int8>) -> Bool

    Objective C

    BOOL class_addMethod ( Class cls, SEL name, IMP imp, const char *types );

    Параметры

    cls

    Класс, к которому можно добавить метод.

    name

    Селектор, указывающий имя добавляемого метода.

    imp

    Функция, которая является реализацией нового метода. Функция должна взять по крайней мере два параметра —self и _cmd.

    types

    Массив символов, описывающих типы параметров методу. Для возможных значений см. Руководство по программированию времени выполнения Objective C> Введите кодировки. Так как функция должна взять по крайней мере два параметра —self и _cmd, вторые и третьи символы должны быть “@:” (первый символ является типом возврата).

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

    YEStrue если метод был добавлен успешно, иначе NOfalse (например, класс уже содержит реализацию метода с тем именем).

    Обсуждение

    class_addMethod добавит переопределение реализации суперкласса, но не заменит существующую реализацию в этом классе. Для изменения существующей реализации использовать method_setImplementation.

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

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

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

    • class_addMethod([self class], @selector(resolveThisMethodDynamically), (IMP) myMethodIMP, "v@:");

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func class_getInstanceMethod(_ aClass: AnyClass!, _ aSelector: Selector) -> Method

    Objective C

    Method class_getInstanceMethod ( Class cls, SEL name );

    Параметры

    aClass

    Класс Вы хотите проверить.

    aSelector

    Селектор метода Вы хотите получить.

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

    Метод, соответствующий реализации селектора, указанного aSelector для класса, указанного aClass, или NULL если указанный класс или его суперклассы не содержат метод экземпляра с указанным селектором.

    Обсуждение

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

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func class_getClassMethod(_ aClass: AnyClass!, _ aSelector: Selector) -> Method

    Objective C

    Method class_getClassMethod ( Class cls, SEL name );

    Параметры

    aClass

    Указатель на определение класса. Передайте класс, содержащий метод, который Вы хотите получить.

    aSelector

    Указатель типа SEL. Передайте селектор метода, который Вы хотите получить.

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

    Указатель на Method структура данных, соответствующая реализации селектора, указанного aSelector для класса, указанного aClass, или NULL если указанный класс или его суперклассы не содержат метод класса с указанным селектором.

    Обсуждение

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

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func class_copyMethodList(_ cls: AnyClass!, _ outCount: UnsafeMutablePointer<UInt32>) -> UnsafeMutablePointer<Method>

    Objective C

    Method * class_copyMethodList ( Class cls, unsigned int *outCount );

    Параметры

    cls

    Класс Вы хотите проверить.

    outCount

    По возврату, содержит длину возвращенного массива. Если outCount NULL, длина не возвращается.

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

    Массив указателей типа Method при описании методов экземпляра, реализованных классом — не включены любые методы экземпляра, реализованные суперклассами. Массив содержит *outCount указатели, сопровождаемые a NULL разделитель. Необходимо освободить массив с free().

    Если cls реализации никакие методы экземпляра, или cls Nil, возвраты NULL и *outCount 0.

    Обсуждение

    Для получения методов класса класса использовать class_copyMethodList(object_getClass(cls), &count).

    Для получения реализаций методов, которые могут быть реализованы суперклассами использовать class_getInstanceMethod или class_getClassMethod.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Заменяет реализацию метода для данного класса.

    Объявление

    Swift

    func class_replaceMethod(_ cls: AnyClass!, _ name: Selector, _ imp: IMP, _ types: UnsafePointer<Int8>) -> IMP

    Objective C

    IMP class_replaceMethod ( Class cls, SEL name, IMP imp, const char *types );

    Параметры

    cls

    Класс Вы хотите изменить.

    name

    Селектор, идентифицирующий метод, реализацию которого Вы хотите заменить.

    imp

    Новая реализация для метода, идентифицированного name для класса, идентифицированного cls.

    types

    Массив символов, описывающих типы параметров методу. Для возможных значений см. Руководство по программированию времени выполнения Objective C> Введите кодировки. Так как функция должна взять по крайней мере два параметра —self и _cmd, вторые и третьи символы должны быть “@:” (первый символ является типом возврата).

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

    Предыдущая реализация метода, идентифицированного name для класса, идентифицированного cls.

    Обсуждение

    Эта функция ведет себя двумя различными способами:

    • Если метод, идентифицированный name еще не существует, это добавляется как будто class_addMethod были вызваны. Кодирование типа, указанное types используется, как дали.

    • Если метод, идентифицированный name действительно существует, его IMP заменяется как будто method_setImplementation были вызваны. Кодирование типа, указанное types проигнорирован.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func class_getMethodImplementation(_ cls: AnyClass!, _ name: Selector) -> IMP

    Objective C

    IMP class_getMethodImplementation ( Class cls, SEL name );

    Параметры

    cls

    Класс Вы хотите проверить.

    name

    Селектор.

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

    Указатель функции, который вызвали бы если [object name] были вызваны с экземпляром класса, или NULL если cls Nil.

    Обсуждение

    class_getMethodImplementation может быть быстрее, чем method_getImplementation(class_getInstanceMethod(cls, name)).

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

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func class_getMethodImplementation_stret(_ cls: AnyClass!, _ name: Selector) -> IMP

    Objective C

    IMP class_getMethodImplementation_stret ( Class cls, SEL name );

    Параметры

    cls

    Класс Вы хотите проверить.

    name

    Селектор.

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

    Указатель функции, который вызвали бы если [object name] были вызваны с экземпляром класса, или NULL если cls Nil.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func class_respondsToSelector(_ cls: AnyClass!, _ sel: Selector) -> Bool

    Objective C

    BOOL class_respondsToSelector ( Class cls, SEL sel );

    Параметры

    cls

    Класс Вы хотите проверить.

    sel

    Селектор.

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

    YEStrue если экземпляры класса реагируют на селектор, иначе NOfalse.

    Обсуждение

    Необходимо обычно использовать NSObject respondsToSelector: или instancesRespondToSelector: методы вместо этой функции.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Добавляет протокол к классу.

    Объявление

    Swift

    func class_addProtocol(_ cls: AnyClass!, _ `outCount`: Protocol!) -> Bool

    Objective C

    BOOL class_addProtocol ( Class cls, Protocol *protocol );

    Параметры

    cls

    Класс для изменения.

    outCount

    Протокол для добавления к cls.

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

    YEStrue если протокол был добавлен успешно, иначе NOfalse (например, класс уже соответствует тому протоколу).

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Добавляет свойство к классу.

    Объявление

    Swift

    func class_addProperty(_ cls: AnyClass!, _ name: UnsafePointer<Int8>, _ attributes: UnsafePointer<objc_property_attribute_t>, _ attributeCount: UInt32) -> Bool

    Objective C

    BOOL class_addProperty ( Class cls, const char *name, const objc_property_attribute_t *attributes, unsigned int attributeCount );

    Параметры

    cls

    Класс для изменения.

    name

    Имя свойства.

    attributes

    Массив атрибутов свойства.

    attributeCount

    Число атрибутов в attributes.

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

    YEStrue если свойство было добавлено успешно; иначе NOfalse (например, эта функция возвраты NOfalse если класс уже имеет то свойство).

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

    См. также

    class_replaceProperty

  • Замените свойство класса.

    Объявление

    Swift

    func class_replaceProperty(_ cls: AnyClass!, _ name: UnsafePointer<Int8>, _ attributes: UnsafePointer<objc_property_attribute_t>, _ attributeCount: UInt32)

    Objective C

    void class_replaceProperty ( Class cls, const char *name, const objc_property_attribute_t *attributes, unsigned int attributeCount );

    Параметры

    cls

    Класс для изменения.

    name

    Имя свойства.

    attributes

    Массив атрибутов свойства.

    attributeCount

    Число атрибутов в attributes.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

    См. также

    class_addProperty

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

    Объявление

    Swift

    func class_conformsToProtocol(_ cls: AnyClass!, _ `protocol`: Protocol!) -> Bool

    Objective C

    BOOL class_conformsToProtocol ( Class cls, Protocol *protocol );

    Параметры

    cls

    Класс Вы хотите проверить.

    protocol

    Протокол.

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

    YEStrue если cls соответствует protocol, иначе NOfalse.

    Обсуждение

    Необходимо обычно использовать NSObject conformsToProtocol: метод вместо этой функции.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Описывает протоколы, принятые классом.

    Объявление

    Swift

    func class_copyProtocolList(_ cls: AnyClass!, _ outCount: UnsafeMutablePointer<UInt32>) -> AutoreleasingUnsafeMutablePointer<Protocol?>

    Objective C

    Protocol ** class_copyProtocolList ( Class cls, unsigned int *outCount );

    Параметры

    cls

    Класс Вы хотите проверить.

    outCount

    По возврату, содержит длину возвращенного массива. Если outCount NULL, длина не возвращается.

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

    Массив указателей типа Protocol* описание протоколов принято классом. Любые протоколы, принятые суперклассами или другими протоколами, не включены. Массив содержит *outCount указатели, сопровождаемые a NULL разделитель. Необходимо освободить массив с free().

    Если cls не принимает протоколов, или cls Nil, возвраты NULL и *outCount 0.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Возвращает номер версии определения класса.

    Объявление

    Swift

    func class_getVersion(_ theClass: AnyClass!) -> Int32

    Objective C

    int class_getVersion ( Class cls );

    Параметры

    theClass

    Указатель на Class структура данных. Передайте определение класса, для которого Вы хотите получить версию.

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

    Целое число, указывающее номер версии определения класса.

    Обсуждение

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

    Классы произошли из платформы Основы NSObject класс может получить номер версии определения класса с помощью getVersion метод класса, реализованный с помощью class_getVersion функция.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func class_setVersion(_ theClass: AnyClass!, _ version: Int32)

    Objective C

    void class_setVersion ( Class cls, int version );

    Параметры

    theClass

    Указатель на Class структура данных. Передайте определение класса, для которого Вы хотите установить версию.

    version

    Целое число. Передайте новый номер версии определения класса.

    Обсуждение

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

    Классы произошли из платформы Основы NSObject класс может установить номер версии определения класса с помощью setVersion: метод класса, реализованный с помощью class_setVersion функция.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Используемый бесплатным образованием моста CoreFoundation.

    Объявление

    Objective C

    Class objc_getFutureClass ( const char *name );

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

    Не вызывайте эту функцию сами.

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

    Objective C

    @import ObjectiveC;

    Доступность

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

  • Используемый бесплатным образованием моста CoreFoundation.

    Объявление

    Objective C

    void objc_setFutureClass ( Class cls, const char *name );

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

    Не вызывайте эту функцию сами.

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

    Objective C

    @import ObjectiveC;

    Доступность

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

  • Создает новый класс и метакласс.

    Объявление

    Swift

    func objc_allocateClassPair(_ superclass: AnyClass!, _ name: UnsafePointer<Int8>, _ extraBytes: UInt) -> AnyClass!

    Objective C

    Class objc_allocateClassPair ( Class superclass, const char *name, size_t extraBytes );

    Параметры

    superclass

    Класс для использования в качестве суперкласса нового класса, или Nil создать новый корневой класс.

    name

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

    extraBytes

    Число байтов для выделения для индексируемого ivars в конце объектов класса и метакласса. Это должно обычно быть 0.

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

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

    Обсуждение

    Можно получить указатель на новый метакласс путем вызова object_getClass(newClass).

    Для создания нового класса запустите путем вызова objc_allocateClassPair. Тогда установите атрибуты класса с функциями как class_addMethod и class_addIvar. Когда Вы будете сделаны, создавая класс, вызвать objc_registerClassPair. Новый класс теперь готов к употреблению.

    Методы экземпляра и переменные экземпляра должны быть добавлены к самому классу. Методы класса должны быть добавлены к метаклассу.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

    См. также

    objc_disposeClassPair

  • Уничтожает класс и его связанный метакласс.

    Объявление

    Swift

    func objc_disposeClassPair(_ cls: AnyClass!)

    Objective C

    void objc_disposeClassPair ( Class cls );

    Параметры

    cls

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

    Обсуждение

    Не вызывайте эту функцию если экземпляры cls класс или любой подкласс существуют.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Регистрирует класс, выделенный с помощью objc_allocateClassPair.

    Объявление

    Swift

    func objc_registerClassPair(_ cls: AnyClass!)

    Objective C

    void objc_registerClassPair ( Class cls );

    Параметры

    cls

    Класс Вы хотите зарегистрироваться.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Используемый наблюдением значения ключа основы.

    Объявление

    Swift

    func objc_duplicateClass(_ original: AnyClass!, _ name: UnsafePointer<Int8>, _ extraBytes: UInt) -> AnyClass!

    Objective C

    Class objc_duplicateClass ( Class original, const char *name, size_t extraBytes );

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

    Не вызывайте эту функцию сами.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Objective C

    id class_createInstance ( Class cls, size_t extraBytes );

    Параметры

    cls

    Класс, из которого Вы хотите выделить экземпляр.

    extraBytes

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

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

    Экземпляр класса cls.

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

    Objective C

    @import ObjectiveC;

    Доступность

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

    См. также

    objc_constructInstance

  • Создает экземпляр класса в указанном расположении.

    Объявление

    Objective C

    id objc_constructInstance ( Class cls, void *bytes );

    Параметры

    cls

    Класс, из которого Вы хотите выделить экземпляр.

    bytes

    Расположение, в котором можно выделить экземпляр cls класс. bytes myst указывают на, по крайней мере, class_getInstanceSize(cls) байты хорошо выровненной, заполненной нулями памяти.

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

    Экземпляр класса cls в bytes, если успешный; иначе nil (например, если cls или bytes самостоятельно nil).

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

    Objective C

    @import ObjectiveC;

    Доступность

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

    См. также

    class_createInstance

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

    Объявление

    Objective C

    void * objc_destructInstance ( id obj );

    Обсуждение

    Этот метод ничего не делает если obj nil.

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

    Objective C

    @import ObjectiveC;

    Доступность

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

    См. также

    objc_constructInstance

  • Возвращает копию данного объекта.

    Объявление

    Objective C

    id object_copy ( id obj, size_t size );

    Параметры

    obj

    Объект Objective C.

    size

    Размер объекта obj.

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

    Копия obj.

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

    Objective C

    @import ObjectiveC;

    Доступность

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

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

    Объявление

    Objective C

    id object_dispose ( id obj );

    Параметры

    obj

    Объект Objective C.

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

    nil.

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

    Objective C

    @import ObjectiveC;

    Доступность

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

  • Изменяет значение переменной экземпляра экземпляра класса.

    Объявление

    Objective C

    Ivar object_setInstanceVariable ( id obj, const char *name, void *value );

    Параметры

    obj

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

    name

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

    value

    Новое значение для переменной экземпляра.

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

    Указатель на Ivar структура данных, определяющая тип и имя переменной экземпляра, указанной name.

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

    Objective C

    @import ObjectiveC;

    Доступность

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

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

    Объявление

    Objective C

    Ivar object_getInstanceVariable ( id obj, const char *name, void **outValue );

    Параметры

    obj

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

    name

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

    outValue

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

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

    Указатель на Ivar структура данных, определяющая тип и имя переменной экземпляра, указанной name.

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

    Objective C

    @import ObjectiveC;

    Доступность

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

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

    Объявление

    Objective C

    void * object_getIndexedIvars ( id obj );

    Параметры

    obj

    Объект Objective C.

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

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

    Обсуждение

    Эта функция возвращает указатель на любые дополнительные байты, выделенные с экземпляром (как указано class_createInstance с extraBytes> 0). Эта память следует за обычным ivars объекта, но может не быть смежна с последним ivar.

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

    В собравшей «мусор» среде память сканируется консервативно.

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

    Objective C

    @import ObjectiveC;

    Доступность

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

  • Читает значение переменной экземпляра в объекте.

    Объявление

    Swift

    func object_getIvar(_ object: AnyObject!, _ ivar: Ivar) -> AnyObject!

    Objective C

    id object_getIvar ( id obj, Ivar ivar );

    Параметры

    object

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

    ivar

    Описание Ivar переменной экземпляра, значение которой Вы хотите считать.

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

    Значение переменной экземпляра, указанной ivar, или nil если object nil.

    Обсуждение

    object_getIvar быстрее, чем object_getInstanceVariable если уже известен Ivar для переменной экземпляра.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Устанавливает значение переменной экземпляра в объекте.

    Объявление

    Swift

    func object_setIvar(_ object: AnyObject!, _ ivar: Ivar, _ value: AnyObject!)

    Objective C

    void object_setIvar ( id obj, Ivar ivar, id value );

    Параметры

    object

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

    ivar

    Описание Ivar переменной экземпляра, значение которой Вы хотите установить.

    value

    Новое значение для переменной экземпляра.

    Обсуждение

    object_setIvar быстрее, чем object_setInstanceVariable если уже известен Ivar для переменной экземпляра.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Возвращает имя класса данного объекта.

    Объявление

    Objective C

    const char * object_getClassName ( id obj );

    Параметры

    obj

    Объект Objective C.

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

    Имя то, класса который obj экземпляр.

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

    Objective C

    @import ObjectiveC;

    Доступность

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

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

    Объявление

    Swift

    func object_getClass(_ object: AnyObject!) -> AnyClass!

    Objective C

    Class object_getClass ( id obj );

    Параметры

    object

    Объект Вы хотите проверить.

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

    Объект класса которого object экземпляр, или Nil если object nil.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Устанавливает класс объекта.

    Объявление

    Swift

    func object_setClass(_ object: AnyObject!, _ sel: AnyClass!) -> AnyClass!

    Objective C

    Class object_setClass ( id obj, Class cls );

    Параметры

    object

    Объект изменить.

    sel

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

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

    Предыдущее значение objectкласс, или Nil если object nil.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func objc_getClassList(_ buffer: AutoreleasingUnsafeMutablePointer<AnyClass?>, _ bufferLen: Int32) -> Int32

    Objective C

    int objc_getClassList ( Class *buffer, int bufferCount );

    Параметры

    buffer

    Массив Class значения. На выводе, каждом Class оцените указывает на одно определение класса, до также bufferLen или общее количество зарегистрированных классов, какой бы ни меньше. Можно передать NULL получить общее количество зарегистрированных определений классов, фактически не получая определений классов.

    bufferLen

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

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

    Целочисленное значение, указывающее общее количество зарегистрированных классов.

    Обсуждение

    Библиотека времени выполнения Objective C автоматически регистрирует все классы, определенные в Вашем исходном коде. Можно создать определения классов во время выполнения и зарегистрировать их в objc_addClass функция.

    Перечисление 1 демонстрирует, как использовать эту функцию для получения всех определений классов, зарегистрированных во времени выполнения Objective C в текущем процессе.

    Перечисление 1Using objc_getClassList
    • int numClasses;
    • Class * classes = NULL;
    • classes = NULL;
    • numClasses = objc_getClassList(NULL, 0);
    • if (numClasses > 0 )
    • {
    • classes = malloc(sizeof(Class) * numClasses);
    • numClasses = objc_getClassList(classes, numClasses);
    • free(classes);
    • }

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

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

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Создает и возвращает список указателей на все зарегистрированные определения классов.

    Объявление

    Swift

    func objc_copyClassList(_ outCount: UnsafeMutablePointer<UInt32>) -> AutoreleasingUnsafeMutablePointer<AnyClass?>

    Objective C

    Class * objc_copyClassList ( unsigned int *outCount );

    Параметры

    outCount

    Целочисленный указатель раньше хранил число классов, возвращенных этой функцией в списке. Этот параметр может быть nil.

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

    A nil завершенный массив классов. Необходимо освободить массив с free().

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

    См. также

    objc_getClassList

  • Возвращает определение класса указанного класса.

    Объявление

    Swift

    func objc_lookUpClass(_ name: UnsafePointer<Int8>) -> AnyClass!

    Objective C

    Class objc_lookUpClass ( const char *name );

    Параметры

    name

    Имя класса для поиска.

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

    Объект класса для именованного класса, или nil если класс не регистрируется во времени выполнения Objective C.

    Обсуждение

    objc_getClass если класс не регистрируется, отличается от этой функции в этом objc_getClass вызывает обратный вызов обработчика класса и затем проверяет во второй раз, чтобы видеть, регистрируется ли класс. Эта функция не вызывает обратный вызов обработчика класса.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Возвращает определение класса указанного класса.

    Объявление

    Swift

    func objc_getClass(_ name: UnsafePointer<Int8>) -> AnyObject!

    Objective C

    Class objc_getClass ( const char *name );

    Параметры

    name

    Имя класса для поиска.

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

    Объект класса для именованного класса, или nil если класс не регистрируется во времени выполнения Objective C.

    Обсуждение

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

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

    Если класс не существует, более ранние реализации этой функции (до OS X v10.0) завершают программу.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Возвращает определение класса указанного класса.

    Объявление

    Swift

    func objc_getRequiredClass(_ name: UnsafePointer<Int8>) -> AnyClass!

    Objective C

    Class objc_getRequiredClass ( const char *name );

    Параметры

    name

    Имя класса для поиска.

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

    Объект класса для именованного класса.

    Обсуждение

    Эта функция совпадает с objc_getClass, если класс не найден, но уничтожает процесс.

    Эта функция используется ZeroLink, где сбой найти класс был бы ошибкой ссылки времени компиляции без ZeroLink.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Возвращает определение метакласса указанного класса.

    Объявление

    Swift

    func objc_getMetaClass(_ name: UnsafePointer<Int8>) -> AnyObject!

    Objective C

    Class objc_getMetaClass ( const char *name );

    Параметры

    name

    Имя класса для поиска.

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

    Class объект для метакласса именованного класса, или nil если класс не регистрируется во времени выполнения Objective C.

    Обсуждение

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

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func ivar_getName(_ v: Ivar) -> UnsafePointer<Int8>

    Objective C

    const char * ivar_getName ( Ivar v );

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

    Струна до, содержащая имя переменной экземпляра.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func ivar_getTypeEncoding(_ v: Ivar) -> UnsafePointer<Int8>

    Objective C

    const char * ivar_getTypeEncoding ( Ivar v );

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

    Струна до, содержащая кодирование типа переменной экземпляра.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func ivar_getOffset(_ v: Ivar) -> Int

    Objective C

    ptrdiff_t ivar_getOffset ( Ivar v );

    Обсуждение

    Например, переменные типа id или другие типы объектов, вызвать object_getIvar и object_setIvar вместо того, чтобы использовать это смещение для доступа к данным переменной экземпляра непосредственно.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func objc_setAssociatedObject(_ object: AnyObject!, _ key: UnsafePointer<Void>, _ value: AnyObject!, _ policy: objc_AssociationPolicy)

    Objective C

    void objc_setAssociatedObject ( id object, const void *key, id value, objc_AssociationPolicy policy );

    Параметры

    object

    Исходный объект для ассоциации.

    key

    Ключ для ассоциации.

    value

    Значение для соединения с ключом key для object. Передача nil очистить существующую ассоциацию.

    policy

    Политика для ассоциации. Для возможных значений посмотрите Ассоциативное Поведение объекта.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func objc_getAssociatedObject(_ object: AnyObject!, _ key: UnsafePointer<Void>) -> AnyObject!

    Objective C

    id objc_getAssociatedObject ( id object, const void *key );

    Параметры

    object

    Исходный объект для ассоциации.

    key

    Ключ для ассоциации.

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

    Значение связалось с ключом key для object.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

    См. также

    objc_setAssociatedObject

  • Удаляет все ассоциации для данного объекта.

    Объявление

    Swift

    func objc_removeAssociatedObjects(_ object: AnyObject!)

    Objective C

    void objc_removeAssociatedObjects ( id object );

    Параметры

    object

    Объект, поддерживающий связанные объекты.

    Обсуждение

    Основная цель этой функции состоит в том, чтобы упростить возвращать объект «нетронутому состоянию”. Вы не должны использовать эту функцию для общего удаления ассоциаций от объектов, так как это также удаляет ассоциации, которые другие клиенты, возможно, добавили к объекту. Обычно необходимо использовать objc_setAssociatedObject с a nil значение для очистки ассоциации.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

Когда это встречается с вызовом метода, компилятор мог бы генерировать вызов к любой из нескольких функций для выполнения фактической отгрузки сообщения, в зависимости от получателя, возвращаемого значения и параметров. Можно использовать эти функции, чтобы динамично вызвать методы от собственного простого кода К или использовать формы параметра, не разрешенные NSObject’s perform... методы. Эти функции объявляются в /usr/include/objc/objc-runtime.h.

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

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

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

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

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

    Объявление

    Objective C

    id objc_msgSend ( id self, SEL op, ... );

    Параметры

    self

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

    op

    Селектор метода, обрабатывающего сообщение.

    ...

    Список аргумента переменной, содержащий параметры методу.

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

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

    Обсуждение

    Когда это встречается с вызовом метода, компилятор генерирует вызов к одной из функций objc_msgSend, objc_msgSend_stret, objc_msgSendSuper, или objc_msgSendSuper_stret. Сообщения отправили к суперклассу объекта (использующий super ключевое слово), отправляются с помощью objc_msgSendSuper; другие сообщения отправляются с помощью objc_msgSend. Методы, имеющие структуры данных как возвращаемые значения, отправляются с помощью objc_msgSendSuper_stret и objc_msgSend_stret.

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

    Objective C

    @import ObjectiveC;

    Доступность

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

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

    Объявление

    Objective C

    double objc_msgSend_fpret ( id self, SEL op, ... );

    Параметры

    self

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

    op

    Селектор метода, обрабатывающего сообщение.

    ...

    Список аргумента переменной, содержащий параметры методу.

    Обсуждение

    На i386 платформе ABI для функций, возвращая значение с плавающей точкой является несовместимым с этим для функций, возвращая целочисленный тип. На i386 платформе, поэтому, необходимо использовать objc_msgSend_fpret для функций это для функций, возвращая нецелочисленный тип. Для float или long double возвратите типы, бросьте функцию к надлежащему типу указателя функции сначала.

    Эта функция не используется на PPC или платформах PPC64.

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

    Objective C

    @import ObjectiveC;

    Доступность

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

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

    Объявление

    Objective C

    void objc_msgSend_stret ( id self, SEL op, ... );

    Параметры

    stretAddr

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

    theReceiver

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

    theSelector

    Указатель типа SEL. Передайте селектор метода, обрабатывающего сообщение.

    ...

    Список аргумента переменной, содержащий параметры методу.

    Обсуждение

    Когда это встречается с вызовом метода, компилятор генерирует вызов к одной из функций objc_msgSend, objc_msgSend_stret, objc_msgSendSuper, или objc_msgSendSuper_stret. Сообщения отправили к суперклассу объекта (использующий super ключевое слово), отправляются с помощью objc_msgSendSuper; другие сообщения отправляются с помощью objc_msgSend. Методы, имеющие структуры данных как возвращаемые значения, отправляются с помощью objc_msgSendSuper_stret и objc_msgSend_stret.

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

    Objective C

    @import ObjectiveC;

    Доступность

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

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

    Объявление

    Objective C

    id objc_msgSendSuper ( struct objc_super *super, SEL op, ... );

    Параметры

    super

    Указатель на objc_super структура данных. Значения передачи, идентифицирующие контекст, который сообщение было отправлено в, включая экземпляр класса, который должен получить сообщение и суперкласс, в котором можно начать искать реализацию метода.

    op

    Указатель типа SEL. Передайте селектор метода, который обработает сообщение.

    ...

    Список аргумента переменной, содержащий параметры методу.

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

    Возвращаемое значение метода, идентифицированного op.

    Обсуждение

    Когда это встречается с вызовом метода, компилятор генерирует вызов к одной из функций objc_msgSend, objc_msgSend_stret, objc_msgSendSuper, или objc_msgSendSuper_stret. Сообщения отправили к суперклассу объекта (использующий super ключевое слово), отправляются с помощью objc_msgSendSuper; другие сообщения отправляются с помощью objc_msgSend. Методы, имеющие структуры данных как возвращаемые значения, отправляются с помощью objc_msgSendSuper_stret и objc_msgSend_stret.

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

    Objective C

    @import ObjectiveC;

    Доступность

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

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

    Объявление

    Objective C

    void objc_msgSendSuper_stret ( struct objc_super *super, SEL op, ... );

    Параметры

    super

    Указатель на objc_super структура данных. Значения передачи, идентифицирующие контекст, который сообщение было отправлено в, включая экземпляр класса, который должен получить сообщение и суперкласс, в котором можно начать искать реализацию метода.

    op

    Указатель типа SEL. Передайте селектор метода.

    ...

    Список аргумента переменной, содержащий параметры методу.

    Обсуждение

    Когда это встречается с вызовом метода, компилятор генерирует вызов к одной из функций objc_msgSend, objc_msgSend_stret, objc_msgSendSuper, или objc_msgSendSuper_stret. Сообщения отправили к суперклассу объекта (использующий super ключевое слово), отправляются с помощью objc_msgSendSuper; другие сообщения отправляются с помощью objc_msgSend. Методы, имеющие структуры данных как возвращаемые значения, отправляются с помощью objc_msgSendSuper_stret и objc_msgSend_stret.

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

    Objective C

    @import ObjectiveC;

    Доступность

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

  • Вызывает реализацию указанного метода.

    Объявление

    Objective C

    id method_invoke ( id receiver, Method m, ... );

    Параметры

    receiver

    Указатель на экземпляр класса, на который Вы хотите вызвать метод. Это значение не должно быть nil.

    m

    Метод, реализацию которого Вы хотите вызвать.

    ...

    Список аргумента переменной, содержащий параметры методу.

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

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

    Обсуждение

    Используя эту функцию для вызова реализации метода быстрее, чем вызов method_getImplementation и method_getName.

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

    Objective C

    @import ObjectiveC;

    Доступность

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

  • Вызывает реализацию указанного метода, возвращающего структуру данных.

    Объявление

    Objective C

    void method_invoke_stret ( id receiver, Method m, ... );

    Параметры

    receiver

    Указатель на экземпляр класса, на который Вы хотите вызвать метод. Это значение не должно быть nil.

    m

    Метод, реализацию которого Вы хотите вызвать.

    ...

    Список аргумента переменной, содержащий параметры методу.

    Обсуждение

    Используя эту функцию для вызова реализации метода быстрее, чем вызов method_getImplementation и method_getName.

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

    Objective C

    @import ObjectiveC;

    Доступность

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

  • Возвращает имя метода.

    Объявление

    Swift

    func method_getName(_ method: Method) -> Selector

    Objective C

    SEL method_getName ( Method m );

    Параметры

    method

    Метод для проверки.

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

    Указатель типа SEL.

    Обсуждение

    Для получения имени метода как струны до вызвать sel_getName(method_getName(method)).

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Возвращает реализацию метода.

    Объявление

    Swift

    func method_getImplementation(_ method: Method) -> IMP

    Objective C

    IMP method_getImplementation ( Method m );

    Параметры

    method

    Метод для проверки.

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

    Указатель функции типа IMP.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func method_getTypeEncoding(_ method: Method) -> UnsafePointer<Int8>

    Objective C

    const char * method_getTypeEncoding ( Method m );

    Параметры

    method

    Метод для проверки.

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

    Струна до. Строка может быть NULL.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func method_copyReturnType(_ method: Method) -> UnsafeMutablePointer<Int8>

    Objective C

    char * method_copyReturnType ( Method m );

    Параметры

    method

    Метод для проверки.

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

    Струна до, описывающая тип возврата. Необходимо освободить строку с free().

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func method_copyArgumentType(_ method: Method, _ index: UInt32) -> UnsafeMutablePointer<Int8>

    Objective C

    char * method_copyArgumentType ( Method m, unsigned int index );

    Параметры

    method

    Метод для проверки.

    index

    Индекс параметра для проверки.

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

    Струна до, описывающая тип параметра в индексе index, или NULL если method не имеет никакого индекса параметра index. Необходимо освободить строку с free().

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func method_getReturnType(_ m: Method, _ dst: UnsafeMutablePointer<Int8>, _ dst_len: UInt)

    Objective C

    void method_getReturnType ( Method m, char *dst, size_t dst_len );

    Обсуждение

    Строка типа возврата метода копируется в dst. dst заполнено как будто strncpy(dst, parameter_type, dst_len) были вызваны.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Возвращает число параметров, принятых методом.

    Объявление

    Swift

    func method_getNumberOfArguments(_ method: Method) -> UInt32

    Objective C

    unsigned int method_getNumberOfArguments ( Method m );

    Параметры

    method

    Указатель на a Method структура данных. Передайте рассматриваемый метод.

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

    Целое число, содержащее число параметров, принято данным методом.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func method_getArgumentType(_ m: Method, _ index: UInt32, _ dst: UnsafeMutablePointer<Int8>, _ dst_len: UInt)

    Objective C

    void method_getArgumentType ( Method m, unsigned int index, char *dst, size_t dst_len );

    Обсуждение

    Строка типа параметра копируется в dst. dst заполнено как будто strncpy(dst, parameter_type, dst_len) были вызваны. Если метод не содержит параметра с тем индексом, dst заполнено как будто strncpy(dst, "", dst_len) были вызваны.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Возвращает структуру описания метода для указанного метода.

    Объявление

    Swift

    func method_getDescription(_ m: Method) -> UnsafeMutablePointer<objc_method_description>

    Objective C

    struct objc_method_description * method_getDescription ( Method m );

    Параметры

    m

    Метод Вы хотите запросить о.

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

    objc_method_description структура, описывающая метод, указанный m.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Устанавливает реализацию метода.

    Объявление

    Swift

    func method_setImplementation(_ m: Method, _ imp: IMP) -> IMP

    Objective C

    IMP method_setImplementation ( Method m, IMP imp );

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

    Предыдущая реализация метода.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Обменивается реализациями двух методов.

    Объявление

    Swift

    func method_exchangeImplementations(_ m1: Method, _ m2: Method)

    Objective C

    void method_exchangeImplementations ( Method m1, Method m2 );

    Обсуждение

    Это - атомарная версия следующего:

    • IMP imp1 = method_getImplementation(m1);
    • IMP imp2 = method_getImplementation(m2);
    • method_setImplementation(m1, imp2);
    • method_setImplementation(m2, imp1);

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Возвращает имена всех загруженных платформ Objective C и динамических библиотек.

    Объявление

    Swift

    func objc_copyImageNames(_ outCount: UnsafeMutablePointer<UInt32>) -> UnsafeMutablePointer<UnsafePointer<Int8>>

    Objective C

    const char ** objc_copyImageNames ( unsigned int *outCount );

    Параметры

    outCount

    Число имен в возвращенном массиве.

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

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

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func class_getImageName(_ cls: AnyClass!) -> UnsafePointer<Int8>

    Objective C

    const char * class_getImageName ( Class cls );

    Параметры

    cls

    Класс Вы запрашиваете о.

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

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

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func objc_copyClassNamesForImage(_ image: UnsafePointer<Int8>, _ outCount: UnsafeMutablePointer<UInt32>) -> UnsafeMutablePointer<UnsafePointer<Int8>>

    Objective C

    const char ** objc_copyClassNamesForImage ( const char *image, unsigned int *outCount );

    Параметры

    image

    Библиотека или платформа Вы запрашиваете о.

    outCount

    Число имен классов в возвращенном массиве.

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

    Массив струн до, представляющих все имена классов в указанной библиотеке или платформе.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Objective C

    const char * sel_getName ( SEL sel );

    Параметры

    aSelector

    Указатель типа SEL. Передайте селектор, имя которого Вы хотите определить.

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

    Струна до, указывающая имя селектора.

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

    Objective C

    @import ObjectiveC;

    Доступность

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

  • Регистрирует метод в системе времени выполнения Objective C, отображает имя метода на селектор и возвращает селекторное значение.

    Объявление

    Objective C

    SEL sel_registerName ( const char *str );

    Параметры

    str

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

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

    Указатель типа SEL указание селектора для именованного метода.

    Обсуждение

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

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

    Objective C

    @import ObjectiveC;

    Доступность

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

  • Регистрирует имя метода в системе времени выполнения Objective C.

    Объявление

    Objective C

    SEL sel_getUid ( const char *str );

    Параметры

    str

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

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

    Указатель типа SEL указание селектора для именованного метода.

    Обсуждение

    Реализация этого метода идентична реализации sel_registerName.

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

    Objective C

    @import ObjectiveC;

    Доступность

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

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

    Объявление

    Swift

    func sel_isEqual(_ lhs: Selector, _ rhs: Selector) -> Bool

    Objective C

    BOOL sel_isEqual ( SEL lhs, SEL rhs );

    Параметры

    lhs

    Селектор для сравнения rhs.

    rhs

    Селектор для сравнения lhs.

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

    YEStrue если rhs и rhs равны, иначе NOfalse.

    Обсуждение

    sel_isEqual эквивалентно ==.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func objc_getProtocol(_ name: UnsafePointer<Int8>) -> Protocol!

    Objective C

    Protocol * objc_getProtocol ( const char *name );

    Параметры

    name

    Имя протокола.

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

    Протокол называют name, или NULL если не называют никакой протокол name мог быть найден.

    Обсуждение

    Эта функция получает блокировку во время выполнения.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func objc_copyProtocolList(_ outCount: UnsafeMutablePointer<UInt32>) -> AutoreleasingUnsafeMutablePointer<Protocol?>

    Objective C

    Protocol ** objc_copyProtocolList ( unsigned int *outCount );

    Параметры

    outCount

    По возврату, содержит число протоколов в возвращенном массиве.

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

    Массив C всех протоколов, известных времени выполнения. Массив содержит *outCount указатели, сопровождаемые a NULL разделитель. Необходимо освободить список с free().

    Обсуждение

    Эта функция получает блокировку во время выполнения.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Создает новый экземпляр протокола.

    Объявление

    Swift

    func objc_allocateProtocol(_ name: UnsafePointer<Int8>) -> Protocol!

    Objective C

    Protocol * objc_allocateProtocol ( const char *name );

    Параметры

    name

    Имя протокола Вы хотите создать.

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

    Новый экземпляр протокола или nil если протокол с тем же именем как name уже существует.

    Обсуждение

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

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

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

    См. также

    objc_registerProtocol

  • Регистрирует недавно создаваемый протокол во времени выполнения Objective C.

    Объявление

    Swift

    func objc_registerProtocol(_ proto: Protocol!)

    Objective C

    void objc_registerProtocol ( Protocol *proto );

    Параметры

    proto

    Протокол Вы хотите зарегистрироваться во времени выполнения Objective C.

    Обсуждение

    Когда Вы создаете новый протокол с помощью objc_allocateProtocol, Вы тогда регистрируете его во времени выполнения Objective C путем вызывания этой функции. После того, как протокол успешно регистрируется, это неизменное и готово использовать.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

    См. также

    objc_allocateProtocol

  • Добавляет метод к протоколу.

    Объявление

    Swift

    func protocol_addMethodDescription(_ proto: Protocol!, _ name: Selector, _ types: UnsafePointer<Int8>, _ isRequiredMethod: Bool, _ isInstanceMethod: Bool)

    Objective C

    void protocol_addMethodDescription ( Protocol *proto, SEL name, const char *types, BOOL isRequiredMethod, BOOL isInstanceMethod );

    Параметры

    proto

    Протокол Вы хотите добавить метод к.

    name

    Имя метода Вы хотите добавить.

    types

    Струна до, представляющая подпись метода, Вы хотите добавить.

    isRequiredMethod

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

    isInstanceMethod

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

    Обсуждение

    Для добавления метода к протоколу с помощью этой функции протокол должен находиться в работе. Т.е. необходимо добавить любые методы к proto перед регистрацией его во времени выполнения Objective C (через objc_registerProtocol функция).

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func protocol_addProtocol(_ proto: Protocol!, _ addition: Protocol!)

    Objective C

    void protocol_addProtocol ( Protocol *proto, Protocol *addition );

    Параметры

    proto

    Протокол Вы хотите добавить зарегистрированный протокол к.

    addition

    Зарегистрированный протокол Вы хотите добавить к proto.

    Обсуждение

    Протокол Вы хотите добавить к (proto) должен находиться в работе — выделенный, но еще не зарегистрированный во времени выполнения Objective C. Протокол Вы хотите добавить (addition) уже должен быть зарегистрирован.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Добавляет свойство к находящемуся в работе протоколу.

    Объявление

    Swift

    func protocol_addProperty(_ proto: Protocol!, _ name: UnsafePointer<Int8>, _ attributes: UnsafePointer<objc_property_attribute_t>, _ attributeCount: UInt32, _ isRequiredProperty: Bool, _ isInstanceProperty: Bool)

    Objective C

    void protocol_addProperty ( Protocol *proto, const char *name, const objc_property_attribute_t *attributes, unsigned int attributeCount, BOOL isRequiredProperty, BOOL isInstanceProperty );

    Параметры

    proto

    Протокол Вы хотите добавить свойство к.

    name

    Имя свойства Вы хотите добавить.

    attributes

    Массив атрибутов свойства.

    attributeCount

    Число свойств в attributes.

    isRequiredProperty

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

    isInstanceProperty

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

    Обсуждение

    Протокол, к которому Вы хотите добавить свойство, должен находиться в работе — выделенный, но еще не зарегистрированный во времени выполнения Objective C (через objc_registerProtocol функция).

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Возвращает имя протокола.

    Объявление

    Swift

    func protocol_getName(_ p: Protocol!) -> UnsafePointer<Int8>

    Objective C

    const char * protocol_getName ( Protocol *p );

    Параметры

    p

    Протокол.

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

    Имя протокола p как струна до.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func protocol_isEqual(_ proto: Protocol!, _ other: Protocol!) -> Bool

    Objective C

    BOOL protocol_isEqual ( Protocol *proto, Protocol *other );

    Параметры

    proto

    Протокол.

    other

    Протокол.

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

    YEStrue если proto совпадает с other, иначе NOfalse.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func protocol_copyMethodDescriptionList(_ p: Protocol!, _ isRequiredMethod: Bool, _ isInstanceMethod: Bool, _ outCount: UnsafeMutablePointer<UInt32>) -> UnsafeMutablePointer<objc_method_description>

    Objective C

    struct objc_method_description * protocol_copyMethodDescriptionList ( Protocol *p, BOOL isRequiredMethod, BOOL isInstanceMethod, unsigned int *outCount );

    Параметры

    p

    Протокол.

    isRequiredMethod

    Булево значение, указывающее, должны ли возвращенные методы быть требуемыми методами (передача YEStrue указать требуемые методы).

    isInstanceMethod

    Булево значение, указывающее, должны ли возвращенные методы быть методами экземпляра (передача YEStrue указать методы экземпляра).

    outCount

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

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

    Массив C objc_method_description структуры, содержащие имена и типы pметоды, указанные isRequiredMethod и isInstanceMethod. Массив содержит *outCount указатели, сопровождаемые a NULL разделитель. Необходимо освободить список с free().

    Если протокол не объявляет методов, соответствующих спецификации, NULL возвращается и *outCount 0.

    Обсуждение

    Методы в других протоколах, принятых этим протоколом, не включены.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Возвращает структуру описания метода для указанного метода данного протокола.

    Объявление

    Swift

    func protocol_getMethodDescription(_ p: Protocol!, _ aSel: Selector, _ isRequiredMethod: Bool, _ isInstanceMethod: Bool) -> objc_method_description

    Objective C

    struct objc_method_description protocol_getMethodDescription ( Protocol *p, SEL aSel, BOOL isRequiredMethod, BOOL isInstanceMethod );

    Параметры

    p

    Протокол.

    aSel

    Селектор

    isRequiredMethod

    Булево значение, указывающее ли aSel требуемый метод.

    isInstanceMethod

    Булево значение, указывающее ли aSel метод экземпляра.

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

    objc_method_description структура, описывающая метод, указанный aSel, isRequiredMethod, и isInstanceMethod для протокола p.

    Если протокол не содержит указанный метод, возвраты objc_method_description структура со значением {NULL, NULL}.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func protocol_copyPropertyList(_ proto: Protocol!, _ outCount: UnsafeMutablePointer<UInt32>) -> UnsafeMutablePointer<objc_property_t>

    Objective C

    objc_property_t * protocol_copyPropertyList ( Protocol *proto, unsigned int *outCount );

    Параметры

    proto

    Протокол.

    outCount

    По возврату, содержит число элементов в возвращенном массиве.

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

    Массив C указателей типа objc_property_t описание свойств, объявленных proto. Любые свойства, объявленные другими протоколами, принятыми этим протоколом, не включены. Массив содержит *outCount указатели, сопровождаемые a NULL разделитель. Необходимо освободить массив с free().

    Если протокол не объявляет свойств, NULL возвращается и *outCount 0.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Возвращает указанное свойство данного протокола.

    Объявление

    Swift

    func protocol_getProperty(_ proto: Protocol!, _ name: UnsafePointer<Int8>, _ isRequiredProperty: Bool, _ isInstanceProperty: Bool) -> objc_property_t

    Objective C

    objc_property_t protocol_getProperty ( Protocol *proto, const char *name, BOOL isRequiredProperty, BOOL isInstanceProperty );

    Параметры

    proto

    Протокол.

    name

    Имя свойства.

    isRequiredProperty

    Булево значение, указывающее ли name требуемое свойство.

    isInstanceProperty

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

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

    Свойство, указанное name, isRequiredProperty, и isInstanceProperty для proto, или NULL если ни один из protoсвойства соответствуют спецификации.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func protocol_copyProtocolList(_ proto: Protocol!, _ outCount: UnsafeMutablePointer<UInt32>) -> AutoreleasingUnsafeMutablePointer<Protocol?>

    Objective C

    Protocol ** protocol_copyProtocolList ( Protocol *proto, unsigned int *outCount );

    Параметры

    proto

    Протокол.

    outCount

    По возврату, содержит число элементов в возвращенном массиве.

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

    Массив C протоколов, принятых proto. Массив содержит *outCount указатели, сопровождаемые a NULL разделитель. Необходимо освободить массив с free().

    Если протокол не объявляет свойств, NULL возвращается и *outCount 0.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func protocol_conformsToProtocol(_ proto: Protocol!, _ other: Protocol!) -> Bool

    Objective C

    BOOL protocol_conformsToProtocol ( Protocol *proto, Protocol *other );

    Параметры

    proto

    Протокол.

    other

    Протокол.

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

    YEStrue если proto соответствует other, иначе NOfalse.

    Обсуждение

    Один протокол может включить другие протоколы с помощью того же синтаксиса что использование классов для принятия протокола:

    • @protocol ProtocolName < protocol list >

    Все протоколы, перечисленные между угловыми скобками, считают частью протокола ProtocolName.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Возвращает имя свойства.

    Объявление

    Swift

    func property_getName(_ property: objc_property_t) -> UnsafePointer<Int8>

    Objective C

    const char * property_getName ( objc_property_t property );

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

    Струна до, содержащая имя свойства.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Возвращает строку атрибута свойства.

    Объявление

    Swift

    func property_getAttributes(_ property: objc_property_t) -> UnsafePointer<Int8>

    Objective C

    const char * property_getAttributes ( objc_property_t property );

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

    Струна до, содержащая атрибуты свойства.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    func property_copyAttributeValue(_ property: objc_property_t, _ attributeName: UnsafePointer<Int8>) -> UnsafeMutablePointer<Int8>

    Objective C

    char * property_copyAttributeValue ( objc_property_t property, const char *attributeName );

    Параметры

    property

    Свойство, значением которого Вы интересуетесь.

    attributeName

    Струна до, представляющая имя атрибута.

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

    Строка значения attributeName атрибут, если Вы существуете в property; иначе, nil. Необходимо освободить возвращенную строку значения с free().

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Возвращает массив атрибутов свойства для данного свойства.

    Объявление

    Swift

    func property_copyAttributeList(_ property: objc_property_t, _ outCount: UnsafeMutablePointer<UInt32>) -> UnsafeMutablePointer<objc_property_attribute_t>

    Objective C

    objc_property_attribute_t * property_copyAttributeList ( objc_property_t property, unsigned int *outCount );

    Параметры

    property

    Свойство, атрибуты которого Вы хотите скопировать.

    outCount

    Число атрибутов возвратилось в массиве.

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

    Массив атрибутов свойства. Необходимо освободить массив с free().

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Вставленный компилятором, когда мутация обнаруживается во время foreach итерации.

    Объявление

    Swift

    func objc_enumerationMutation(_ obj: AnyObject!)

    Objective C

    void objc_enumerationMutation ( id obj );

    Параметры

    obj

    Видоизменяемый объект.

    Обсуждение

    Компилятор вставляет эту функцию, когда это обнаруживает, что объект видоизменен во время foreach итерации. Функция вызвана, когда мутация происходит, и обработчик мутации перечисления предписан, если это устанавливается (через objc_setEnumerationMutationHandler функция). Если обработчик не устанавливается, фатальная ошибка происходит.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Устанавливает текущий обработчик мутации.

    Объявление

    Swift

    func objc_setEnumerationMutationHandler(_ handler: CFunctionPointer<((AnyObject!) -> Void)>)

    Objective C

    void objc_setEnumerationMutationHandler ( void (*handler)(id) );

    Параметры

    handler

    Указатель функции к новому обработчику мутации.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Создает указатель на функцию, вызывающую указанный блок, когда вызывают метод.

    Объявление

    Swift

    func imp_implementationWithBlock(_ block: AnyObject!) -> IMP

    Objective C

    IMP imp_implementationWithBlock ( id block );

    Параметры

    block

    Блок, реализующий этот метод. Подпись block должен быть method_return_type ^(id self, self, method_args …). Селектор метода не доступен block. block копируется с Block_copy().

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

    IMP это вызывает block. Необходимо избавиться от возвращенного IMP использование функции.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

    См. также

    imp_getBlock

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

    Объявление

    Swift

    func imp_getBlock(_ anImp: IMP) -> AnyObject!

    Objective C

    id imp_getBlock ( IMP anImp );

    Параметры

    anImp

    IMP это вызывает этот блок.

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

    Блок, вызванный anImp.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

    См. также

    imp_implementationWithBlock

  • Разъединяет блок с IMP это создавалось с помощью imp_implementationWithBlock, и выпускает копию создававшегося блока.

    Объявление

    Swift

    func imp_removeBlock(_ anImp: IMP) -> Bool

    Objective C

    BOOL imp_removeBlock ( IMP anImp );

    Параметры

    anImp

    IMP это создавалось с помощью imp_implementationWithBlock функция.

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

    YEStrue если блок был выпущен успешно; иначе, NOfalse (например, функциональные возвраты NOfalse если блок не использовался для создания anImp ранее).

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

    См. также

    imp_implementationWithBlock

  • Загружает объект, на который ссылается слабый указатель, и возвращает его.

    Объявление

    Swift

    func objc_loadWeak(_ location: AutoreleasingUnsafeMutablePointer<AnyObject?>) -> AnyObject!

    Objective C

    id objc_loadWeak ( id *location );

    Параметры

    location

    Адрес слабого указателя.

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

    Объект, которым указывают location, или nil если location nil.

    Обсуждение

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

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Хранит новое значение в a __weak переменная.

    Объявление

    Swift

    func objc_storeWeak(_ location: AutoreleasingUnsafeMutablePointer<AnyObject?>, _ obj: AnyObject!) -> AnyObject!

    Objective C

    id objc_storeWeak ( id *location, id obj );

    Параметры

    location

    Адрес слабого указателя.

    obj

    Новый объект Вы хотите, чтобы слабый указатель теперь указал на.

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

    Значение, сохраненное в location (т.е. obj).

    Обсуждение

    Эта функция обычно используется где угодно a __weak переменная является целью присвоения.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

Типы данных

Структуры данных определения класса

  • Непрозрачный тип, представляющий класс Objective C.

    Объявление

    Objective C

    typedef struct objc_class *Class;

    Доступность

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

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

    Объявление

    Swift

    typealias Method = COpaquePointer

    Objective C

    typedef struct objc_method *Method;

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

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

    Объявление

    Swift

    typealias Ivar = COpaquePointer

    Objective C

    typedef struct objc_ivar *Ivar;

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Непрозрачный тип, представляющий категорию.

    Объявление

    Swift

    typealias Category = COpaquePointer

    Objective C

    typedef struct objc_category *Category;

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Непрозрачный тип, представляющий Objective C, объявил свойство.

    Объявление

    Swift

    typealias objc_property_t = COpaquePointer

    Objective C

    typedef struct objc_property *objc_property_t;

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

  • Указатель на запуск реализации метода.

    Объявление

    Objective C

    id (*IMP)(id, SEL, ...)

    Обсуждение

    Этот тип данных является указателем на запуск функции, реализующей метод. Эта функция использует стандарт C соглашения о вызовах, как реализовано для текущей архитектуры ЦП. Первым параметром является указатель на self (т.е. память для определенного экземпляра этого класса, или, для метода класса, указателя на метакласс). Вторым параметром является селектор метода. Аргументы метода следуют.

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

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

    Объявление

    Objective C

    typedef struct objc_selector *SEL;

    Обсуждение

    Селекторы метода используются для представления имени метода во время выполнения. Селектор метода является струной до, зарегистрированной (или “отобразился “) со временем выполнения Objective C. Когда класс загружается, селекторы, сгенерированные компилятором, автоматически отображаются временем выполнения.

    Можно добавить новые селекторы во время выполнения и получить существующие селекторы с помощью функции sel_registerName.

    При использовании селекторов необходимо использовать значение, возвращенное из sel_registerName или директива компилятора Objective C @selector(). Вы не можете просто бросить струну до к SEL.

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

    Objective C

    @import ObjectiveC;

    Доступность

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

  • Определяет метод Objective C.

    Объявление

    Swift

    struct objc_method_description { var name: Selector var types: UnsafeMutablePointer<Int8> }

    Objective C

    struct objc_method_description { SEL name; char *types; };

    Поля

    name

    Имя метода во время выполнения.

    types

    Типы аргументов метода.

    Доступность

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

  • Содержит массив определений метода.

    Объявление

    Objective C

    struct objc_method_list { struct objc_method_list *obsolete; int method_count; struct objc_method method_list[1]; }

    Поля

    obsolete

    Зарезервированный для будущего использования.

    method_count

    Целое число, указывающее число методов в массиве списка методов.

    method_list

    Массив Method структуры данных.

    Доступность

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

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

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

  • Оптимизация производительности для вызовов метода. Содержит указатели на недавно используемые методы.

    Объявление

    Objective C

    struct objc_cache { unsigned int mask; unsigned int occupied; Method buckets[1]; };

    Поля

    mask

    Целое число, указывающее общее количество выделенных блоков кэша (минус один). Во время поиска метода время выполнения Objective C использует это поле для определения индекса, в котором можно начать линейный поиск buckets массив. Указатель на селектор метода маскируется против этого поля с помощью логической операции И (index = (mask & selector)). Это служит простым алгоритмом хеширования.

    occupied

    Целое число, указывающее общее количество занятых блоков кэша.

    buckets

    Массив указателей на Method структуры данных. Этот массив может содержать не больше, чем mask + 1 элементы. Обратите внимание на то, что указатели могут быть NULL, указание, что блок кэша является незанятым, и занятые блоки, может не быть непрерывным. Этот массив может расти в течение долгого времени.

    Обсуждение

    Для ограничения потребности выполнить линейные поиски списков методов для определений методов, к которым часто получают доступ —, работа, которая может значительно замедлить поиск метода — функции времени выполнения Objective C, хранит указатели на определения последний раз вызываемого метода класса в objc_cache структура данных.

  • Представляет список формальных протоколов.

    Объявление

    Objective C

    struct objc_protocol_list { struct objc_protocol_list *next; int count; Protocol *list[1]; };

    Поля

    next

    Указатель на другого objc_protocol_list структура данных.

    count

    Число протоколов в этом списке.

    list

    Массив указателей на Class структуры данных, представляющие протоколы.

    Обсуждение

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

    Доступность

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

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

  • Определяет атрибут свойства.

    Объявление

    Objective C

    typedef struct { const char *name; const char *value; } objc_property_attribute_t;

    Поля

    name

    Имя атрибута.

    value

    Значение атрибута (обычно пустой).

    Доступность

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

Типы данных экземпляра

Это типы данных, представляющие объекты, классы и суперклассы.

  • id указатель на экземпляр класса.

  • objc_object представляет экземпляр класса.

  • objc_super указывает суперкласс экземпляра.

  • ID ID

    Указатель на экземпляр класса.

    Объявление

    Objective C

    typedef struct objc_object *id;

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

    Objective C

    @import ObjectiveC;

    Доступность

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

  • Представляет экземпляр класса.

    Объявление

    Objective C

    struct objc_object { Class isa; };

    Поля

    isa

    Указатель на определение класса, которого этот объект является экземпляром.

    Обсуждение

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

    alloc и allocWithZone: методы класса платформы Основы NSObject используют функцию class_createInstance создать objc_object структуры данных.

  • Указывает суперкласс экземпляра.

    Объявление

    Swift

    struct objc_super { var receiver: AnyObject! var super_class: AnyClass! }

    Objective C

    struct objc_super { id receiver; Class class; };

    Поля

    receiver

    Указатель типа id. Указывает экземпляр класса.

    class

    Указатель на Class структура данных. Указывает определенный суперкласс экземпляра для обмена сообщениями.

    Обсуждение

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

    Доступность

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

Булево значение

  • Введите для представления булева значения.

    Объявление

    Objective C

    typedef signed char BOOL;

    Обсуждение

    BOOL явно подписывается так @encode(BOOL) c вместо C даже если -funsigned-char используется.

    Для значений посмотрите “Boolean Values”.

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

    Objective C

    @import ObjectiveC;

    Доступность

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

Ассоциативные ссылки

  • Введите для указания поведения ассоциации.

    Объявление

    Swift

    typealias objc_AssociationPolicy = UInt

    Objective C

    typedef uintptr_t objc_AssociationPolicy;

    Обсуждение

    Для значений посмотрите “Associative Object Behaviors”.

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

    Objective C

    @import ObjectiveC;

    Swift

    import ObjectiveC

    Доступность

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

Константы

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

    Объявление

    Objective C

    #define YES (BOOL)1 #define NO (BOOL)0

    Константы

    • YES

      YES

      Определяет YES как 1.

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

    • NO

      NO

      Определяет NO как 0.

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

  • Они макросы определяют нулевые значения для классов и экземпляров.

    Объявление

    Objective C

    #define nil __DARWIN_NULL #define Nil __DARWIN_NULL

    Константы

    • nil

      nil

      Определяет id из нулевого экземпляра.

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

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

    • Nil

      Nil

      Определяет id из нулевого класса.

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

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

    Объявление

    Swift

    var OBJC_OLD_DISPATCH_PROTOTYPES: Int32 { get }

    Objective C

    #define OBJC_OLD_DISPATCH_PROTOTYPES 1

    Константы

    • OBJC_OLD_DISPATCH_PROTOTYPES

      OBJC_OLD_DISPATCH_PROTOTYPES

      OBJC_OLD_DISPATCH_PROTOTYPES == 0 осуществляет правило, что функции отгрузки должны быть брошены к надлежащему типу указателя функции.

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

  • Этот макрос аннотирует класс, как являющийся корневым классом Objective C.

    Объявление

    Objective C

    #define OBJC_ROOT_CLASS

    Константы

    • OBJC_ROOT_CLASS

      OBJC_ROOT_CLASS

      При определении корневого класса Objective C Вы получаете ошибку компилятора, указывающую, что класс определяется, не указывая базовый класс. Можно избежать этой ошибки компилятора путем предшествования определению корневого класса (т.е. перед @interface директива) с OBJC_ROOT_CLASS.

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

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

    Объявление

    Objective C

    #define NS_VALID_UNTIL_END_OF_SCOPE

    Константы

    • NS_VALID_UNTIL_END_OF_SCOPE

      NS_VALID_UNTIL_END_OF_SCOPE

      Локальные переменные Знаков типа id или указатель на тип объекта ObjC так, чтобы значения, сохраненные в тех локальная переменная, не были настойчиво выпущены компилятором во время оптимизации. Вместо этого значения сохранены, или до переменная присваивается снова, или до конец объема локальной переменной (такой как в составном операторе или определении метода).

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

  • Политики имели отношение к ассоциативным ссылкам.

    Объявление

    Swift

    var OBJC_ASSOCIATION_ASSIGN: Int { get } var OBJC_ASSOCIATION_RETAIN_NONATOMIC: Int { get } var OBJC_ASSOCIATION_COPY_NONATOMIC: Int { get } var OBJC_ASSOCIATION_RETAIN: Int { get } var OBJC_ASSOCIATION_COPY: Int { get }

    Objective C

    enum { OBJC_ASSOCIATION_ASSIGN = 0, OBJC_ASSOCIATION_RETAIN_NONATOMIC = 1, OBJC_ASSOCIATION_COPY_NONATOMIC = 3, OBJC_ASSOCIATION_RETAIN = 01401, OBJC_ASSOCIATION_COPY = 01403 };

    Константы

    • OBJC_ASSOCIATION_ASSIGN

      OBJC_ASSOCIATION_ASSIGN

      Указывает слабую ссылку на связанный объект.

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

    • OBJC_ASSOCIATION_RETAIN_NONATOMIC

      OBJC_ASSOCIATION_RETAIN_NONATOMIC

      Указывает сильную ссылку к связанному объекту, и что ассоциация не сделана атомарно.

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

    • OBJC_ASSOCIATION_COPY_NONATOMIC

      OBJC_ASSOCIATION_COPY_NONATOMIC

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

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

    • OBJC_ASSOCIATION_RETAIN

      OBJC_ASSOCIATION_RETAIN

      Указывает сильную ссылку к связанному объекту, и что ассоциация сделана атомарно.

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

    • OBJC_ASSOCIATION_COPY

      OBJC_ASSOCIATION_COPY

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

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