Ссылка времени выполнения Objective C
Наследование
Не применимый
Соответствует
Не применимый
Оператор импорта
Swift
import ObjectiveC
Objective C
@import Foundation;
Этот документ описывает 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
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает суперкласс класса.
Объявление
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
Доступность
Доступный в iOS 2.0 и позже.
-
class_setSuperclass
(iOS 2.0)Устанавливает суперкласс данного класса.
Объявление
Objective C
Class class_setSuperclass ( Class cls, Class newSuper );
Параметры
cls
Класс, суперкласс которого Вы хотите установить.
newSuper
Новый суперкласс для
cls
.Возвращаемое значение
Старый суперкласс для
cls
.Специальные замечания
Вы не должны использовать эту функцию.
Оператор импорта
Objective C
@import ObjectiveC;
Доступность
Доступный в iOS 2.0 и позже.
Осуждаемый в iOS 2.0.
-
Возвращает булево значение, указывающее, является ли объект класса метаклассом.
Объявление
Swift
func class_isMetaClass(_
cls
: AnyClass!) -> BoolObjective C
BOOL class_isMetaClass ( Class cls );
Параметры
cls
Объект класса.
Возвращаемое значение
YES
true
еслиcls
метакласс,NO
false
еслиcls
неметакласс,NO
false
еслиcls
Nil
.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает размер экземпляров класса.
Объявление
Swift
func class_getInstanceSize(_
cls
: AnyClass!) -> IntObjective C
size_t class_getInstanceSize ( Class cls );
Параметры
cls
Объект класса.
Возвращаемое значение
Размер в байтах экземпляров класса
cls
, или0
еслиcls
Nil
.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Возвраты
Ivar
для указанной переменной экземпляра данного класса.Объявление
Swift
func class_getInstanceVariable(_
cls
: AnyClass!, _name
: UnsafePointer<Int8>) -> IvarObjective C
Ivar class_getInstanceVariable ( Class cls, const char *name );
Параметры
cls
Класс, переменную экземпляра которого Вы хотите получить.
name
Имя определения переменной экземпляра для получения.
Возвращаемое значение
Указатель на
Ivar
структура данных, содержащая информацию о переменной экземпляра, указаннойname
.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Возвраты
Ivar
для указанной переменной класса данного класса.Объявление
Swift
func class_getClassVariable(_
cls
: AnyClass!, _name
: UnsafePointer<Int8>) -> IvarObjective C
Ivar class_getClassVariable ( Class cls, const char *name );
Параметры
cls
Определение класса, переменную класса которого Вы хотите получить.
name
Имя определения переменной класса для получения.
Возвращаемое значение
Указатель на
Ivar
структура данных, содержащая информацию о переменной класса, указаннойname
.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Добавляет новая переменная экземпляра к классу.
Объявление
Swift
func class_addIvar(_
cls
: AnyClass!, _name
: UnsafePointer<Int8>, _size
: Int, _alignment
: UInt8, _types
: UnsafePointer<Int8>) -> BoolObjective C
BOOL class_addIvar ( Class cls, const char *name, size_t size, uint8_t alignment, const char *types );
Возвращаемое значение
YES
true
если переменная экземпляра была добавлена успешно, иначеNO
false
(например, класс уже содержит переменную экземпляра с тем именем).Обсуждение
Эта функция может только быть вызвана после
objc_allocateClassPair
и преждеobjc_registerClassPair
. Добавление переменной экземпляра к существующему классу не поддерживается.Класс не должен быть метаклассом. Добавление переменной экземпляра к метаклассу не поддерживается.
Минимальное выравнивание переменной экземпляра в байтах
1<<align
. Минимальное выравнивание переменной экземпляра зависит от типа ivar и архитектуры машины. Для переменных любого типа указателя, передачиlog2(sizeof(pointer_type))
.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Описывает переменные экземпляра, объявленные классом.
Объявление
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
указатели, сопровождаемые aNULL
разделитель. Необходимо освободить массив сfree()
.Если класс не объявляет переменных экземпляра, или
cls
Nil
,NULL
возвращается и*outCount
0
.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает описание
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
Доступность
Доступный в iOS 2.0 и позже.
-
Наборы
Ivar
расположение для данного класса.Объявление
Swift
func class_setIvarLayout(_
cls
: AnyClass!, _layout
: UnsafePointer<UInt8>)Objective C
void class_setIvarLayout ( Class cls, const uint8_t *layout );
Параметры
cls
Класс для изменения.
layout
Расположение
Ivar
s дляcls
.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает описание расположения слабых
Ivar
s для данного класса.Объявление
Swift
func class_getWeakIvarLayout(_
cls
: AnyClass!) -> UnsafePointer<UInt8>Objective C
const uint8_t * class_getWeakIvarLayout ( Class cls );
Параметры
cls
Класс для проверки.
Возвращаемое значение
Описание расположения слабого
Ivar
s дляcls
.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Устанавливает расположение для слабого
Ivar
s для данного класса.Объявление
Swift
func class_setWeakIvarLayout(_
cls
: AnyClass!, _layout
: UnsafePointer<UInt8>)Objective C
void class_setWeakIvarLayout ( Class cls, const uint8_t *layout );
Параметры
cls
Класс для изменения.
layout
Расположение слабого
Ivar
s дляcls
.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает свойство с именем данного класса.
Объявление
Swift
func class_getProperty(_
cls
: AnyClass!, _name
: UnsafePointer<Int8>) -> objc_property_tObjective 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
Доступность
Доступный в iOS 2.0 и позже.
-
Описывает свойства, объявленные классом.
Объявление
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
указатели, сопровождаемые aNULL
разделитель. Необходимо освободить массив сfree()
.Если
cls
не объявляет свойств, илиcls
Nil
, возвратыNULL
и*outCount
0
.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Добавляет новый метод к классу с именем и реализацией.
Объявление
Swift
func class_addMethod(_
cls
: AnyClass!, _name
: Selector, _imp
: IMP, _types
: UnsafePointer<Int8>) -> BoolObjective C
BOOL class_addMethod ( Class cls, SEL name, IMP imp, const char *types );
Параметры
cls
Класс, к которому можно добавить метод.
name
Селектор, указывающий имя добавляемого метода.
imp
Функция, которая является реализацией нового метода. Функция должна взять по крайней мере два параметра —
self
и_cmd
.types
Массив символов, описывающих типы параметров методу. Для возможных значений см. Руководство по программированию времени выполнения Objective C> Введите кодировки. Так как функция должна взять по крайней мере два параметра —
self
и_cmd
, вторые и третьи символы должны быть “@:
” (первый символ является типом возврата).Возвращаемое значение
YES
true
если метод был добавлен успешно, иначеNO
false
(например, класс уже содержит реализацию метода с тем именем).Обсуждение
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
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает указанный метод экземпляра для данного класса.
Объявление
Swift
func class_getInstanceMethod(_
aClass
: AnyClass!, _aSelector
: Selector) -> MethodObjective C
Method class_getInstanceMethod ( Class cls, SEL name );
Параметры
aClass
Класс Вы хотите проверить.
aSelector
Селектор метода Вы хотите получить.
Возвращаемое значение
Метод, соответствующий реализации селектора, указанного
aSelector
для класса, указанногоaClass
, илиNULL
если указанный класс или его суперклассы не содержат метод экземпляра с указанным селектором.Обсуждение
Обратите внимание на то, что эта функция ищет суперклассы реализации, тогда как
class_copyMethodList
не делает.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает указатель на структуру данных, описывающую данный метод класса для данного класса.
Объявление
Swift
func class_getClassMethod(_
aClass
: AnyClass!, _aSelector
: Selector) -> MethodObjective C
Method class_getClassMethod ( Class cls, SEL name );
Параметры
aClass
Указатель на определение класса. Передайте класс, содержащий метод, который Вы хотите получить.
aSelector
Указатель типа
SEL
. Передайте селектор метода, который Вы хотите получить.Возвращаемое значение
Указатель на
Method
структура данных, соответствующая реализации селектора, указанногоaSelector
для класса, указанногоaClass
, илиNULL
если указанный класс или его суперклассы не содержат метод класса с указанным селектором.Обсуждение
Обратите внимание на то, что эта функция ищет суперклассы реализации, тогда как
class_copyMethodList
не делает.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.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
указатели, сопровождаемые aNULL
разделитель. Необходимо освободить массив сfree()
.Если
cls
реализации никакие методы экземпляра, илиcls
Nil
, возвратыNULL
и*outCount
0
.Обсуждение
Для получения методов класса класса использовать
class_copyMethodList(object_getClass(cls), &count)
.Для получения реализаций методов, которые могут быть реализованы суперклассами использовать
class_getInstanceMethod
илиclass_getClassMethod
.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Заменяет реализацию метода для данного класса.
Объявление
Swift
func class_replaceMethod(_
cls
: AnyClass!, _name
: Selector, _imp
: IMP, _types
: UnsafePointer<Int8>) -> IMPObjective 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
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает указатель функции, который вызвали бы, если бы определенное сообщение было отправлено в экземпляр класса.
Объявление
Swift
func class_getMethodImplementation(_
cls
: AnyClass!, _name
: Selector) -> IMPObjective 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
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает указатель функции, который вызвали бы, если бы определенное сообщение было отправлено в экземпляр класса.
Объявление
Swift
func class_getMethodImplementation_stret(_
cls
: AnyClass!, _name
: Selector) -> IMPObjective C
IMP class_getMethodImplementation_stret ( Class cls, SEL name );
Параметры
cls
Класс Вы хотите проверить.
name
Селектор.
Возвращаемое значение
Указатель функции, который вызвали бы если
[object name]
были вызваны с экземпляром класса, илиNULL
еслиcls
Nil
.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает булево значение, указывающее, реагируют ли экземпляры класса на определенный селектор.
Объявление
Swift
func class_respondsToSelector(_
cls
: AnyClass!, _sel
: Selector) -> BoolObjective C
BOOL class_respondsToSelector ( Class cls, SEL sel );
Параметры
cls
Класс Вы хотите проверить.
sel
Селектор.
Возвращаемое значение
YES
true
если экземпляры класса реагируют на селектор, иначеNO
false
.Обсуждение
Необходимо обычно использовать
NSObject
respondsToSelector:
илиinstancesRespondToSelector:
методы вместо этой функции.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Добавляет протокол к классу.
Объявление
Swift
func class_addProtocol(_
cls
: AnyClass!, _ `outCount
`: Protocol!) -> BoolObjective C
BOOL class_addProtocol ( Class cls, Protocol *protocol );
Параметры
cls
Класс для изменения.
outCount
Протокол для добавления к
cls
.Возвращаемое значение
YES
true
если протокол был добавлен успешно, иначеNO
false
(например, класс уже соответствует тому протоколу).Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Добавляет свойство к классу.
Объявление
Swift
func class_addProperty(_
cls
: AnyClass!, _name
: UnsafePointer<Int8>, _attributes
: UnsafePointer<objc_property_attribute_t>, _attributeCount
: UInt32) -> BoolObjective C
BOOL class_addProperty ( Class cls, const char *name, const objc_property_attribute_t *attributes, unsigned int attributeCount );
Параметры
cls
Класс для изменения.
name
Имя свойства.
attributes
Массив атрибутов свойства.
attributeCount
Число атрибутов в
attributes
.Возвращаемое значение
YES
true
если свойство было добавлено успешно; иначеNO
false
(например, эта функция возвратыNO
false
если класс уже имеет то свойство).Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 4.3 и позже.
См. также
-
Замените свойство класса.
Объявление
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
Доступность
Доступный в iOS 4.3 и позже.
См. также
-
Возвращает булево значение, указывающее, соответствует ли класс данному протоколу.
Объявление
Swift
func class_conformsToProtocol(_
cls
: AnyClass!, _ `protocol
`: Protocol!) -> BoolObjective C
BOOL class_conformsToProtocol ( Class cls, Protocol *protocol );
Параметры
cls
Класс Вы хотите проверить.
protocol
Протокол.
Возвращаемое значение
YES
true
еслиcls
соответствуетprotocol
, иначеNO
false
.Обсуждение
Необходимо обычно использовать
NSObject
conformsToProtocol:
метод вместо этой функции.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Описывает протоколы, принятые классом.
Объявление
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
указатели, сопровождаемые aNULL
разделитель. Необходимо освободить массив сfree()
.Если
cls
не принимает протоколов, илиcls
Nil
, возвратыNULL
и*outCount
0
.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает номер версии определения класса.
Объявление
Swift
func class_getVersion(_
theClass
: AnyClass!) -> Int32Objective C
int class_getVersion ( Class cls );
Параметры
theClass
Указатель на
Class
структура данных. Передайте определение класса, для которого Вы хотите получить версию.Возвращаемое значение
Целое число, указывающее номер версии определения класса.
Обсуждение
Можно использовать номер версии определения класса для обеспечения управления версиями интерфейса, который класс представляет другим классам. Это особенно полезно для сериализации объекта (т.е. архивация объекта в сглаженной форме), где важно распознать изменения в расположении переменных экземпляра в различных версиях определения класса.
Классы произошли из платформы Основы
NSObject
класс может получить номер версии определения класса с помощьюgetVersion
метод класса, реализованный с помощьюclass_getVersion
функция.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.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
Доступность
Доступный в iOS 2.0 и позже.
-
Используемый бесплатным образованием моста CoreFoundation.
Объявление
Objective C
Class objc_getFutureClass ( const char *name );
Специальные замечания
Не вызывайте эту функцию сами.
Оператор импорта
Objective C
@import ObjectiveC;
Доступность
Доступный в iOS 2.0 и позже.
-
Используемый бесплатным образованием моста CoreFoundation.
Объявление
Objective C
void objc_setFutureClass ( Class cls, const char *name );
Специальные замечания
Не вызывайте эту функцию сами.
Оператор импорта
Objective C
@import ObjectiveC;
Доступность
Доступный в iOS 2.0 и позже.
-
Создает новый класс и метакласс.
Объявление
Swift
func objc_allocateClassPair(_
superclass
: AnyClass!, _name
: UnsafePointer<Int8>, _extraBytes
: Int) -> 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
Доступность
Доступный в iOS 2.0 и позже.
См. также
-
Уничтожает класс и его связанный метакласс.
Объявление
Swift
func objc_disposeClassPair(_
cls
: AnyClass!)Objective C
void objc_disposeClassPair ( Class cls );
Параметры
cls
Класс, который будет уничтожен. Этот класс, должно быть, был выделен с помощью
objc_allocateClassPair
.Обсуждение
Не вызывайте эту функцию если экземпляры
cls
класс или любой подкласс существуют.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Регистрирует класс, выделенный с помощью
objc_allocateClassPair
.Объявление
Swift
func objc_registerClassPair(_
cls
: AnyClass!)Objective C
void objc_registerClassPair ( Class cls );
Параметры
cls
Класс Вы хотите зарегистрироваться.
Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Используемый наблюдением значения ключа основы.
Объявление
Swift
func objc_duplicateClass(_
original
: AnyClass!, _name
: UnsafePointer<Int8>, _extraBytes
: Int) -> AnyClass!Objective C
Class objc_duplicateClass ( Class original, const char *name, size_t extraBytes );
Специальные замечания
Не вызывайте эту функцию сами.
Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Создает экземпляр класса, выделяя память для класса в значении по умолчанию malloc зона памяти.
Объявление
Objective C
id class_createInstance ( Class cls, size_t extraBytes );
Параметры
cls
Класс, из которого Вы хотите выделить экземпляр.
extraBytes
Целое число, указывающее число дополнительных байтов для выделения. Дополнительные байты могут использоваться для хранения дополнительных переменных экземпляра вне определенных в определении класса.
Возвращаемое значение
Экземпляр класса
cls
.Оператор импорта
Objective C
@import ObjectiveC;
Доступность
Доступный в iOS 2.0 и позже.
См. также
-
Создает экземпляр класса в указанном расположении.
Объявление
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;
Доступность
Доступный в iOS 3.0 и позже.
См. также
-
Уничтожает экземпляр класса, не освобождая память и удаляет любую из ее связанных ссылок.
Объявление
Objective C
void * objc_destructInstance ( id obj );
Оператор импорта
Objective C
@import ObjectiveC;
Доступность
Доступный в iOS 3.0 и позже.
См. также
-
Возвращает копию данного объекта.
Объявление
Objective C
id object_copy ( id obj, size_t size );
Параметры
obj
Объект Objective C.
size
Размер объекта
obj
.Возвращаемое значение
Копия
obj
.Оператор импорта
Objective C
@import ObjectiveC;
Доступность
Доступный в iOS 2.0 и позже.
-
Освобождает память, занятую данным объектом.
Объявление
Objective C
id object_dispose ( id obj );
Параметры
obj
Объект Objective C.
Возвращаемое значение
nil
.Оператор импорта
Objective C
@import ObjectiveC;
Доступность
Доступный в iOS 2.0 и позже.
-
Изменяет значение переменной экземпляра экземпляра класса.
Объявление
Objective C
Ivar object_setInstanceVariable ( id obj, const char *name, void *value );
Параметры
obj
Указатель на экземпляр класса. Передайте объект, содержащий переменную экземпляра, значение которой Вы хотите изменить.
name
Струна до. Передайте имя переменной экземпляра, значение которой Вы хотите изменить.
value
Новое значение для переменной экземпляра.
Возвращаемое значение
Указатель на
Ivar
структура данных, определяющая тип и имя переменной экземпляра, указаннойname
.Оператор импорта
Objective C
@import ObjectiveC;
Доступность
Доступный в iOS 2.0 и позже.
-
Получает значение переменной экземпляра экземпляра класса.
Объявление
Objective C
Ivar object_getInstanceVariable ( id obj, const char *name, void **outValue );
Параметры
obj
Указатель на экземпляр класса. Передайте объект, содержащий переменную экземпляра, значение которой Вы хотите получить.
name
Струна до. Передайте имя переменной экземпляра, значение которой Вы хотите получить.
outValue
По возврату, содержит указатель на значение переменной экземпляра.
Возвращаемое значение
Указатель на
Ivar
структура данных, определяющая тип и имя переменной экземпляра, указаннойname
.Оператор импорта
Objective C
@import ObjectiveC;
Доступность
Доступный в iOS 2.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;
Доступность
Доступный в iOS 2.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
Доступность
Доступный в iOS 2.0 и позже.
-
Устанавливает значение переменной экземпляра в объекте.
Объявление
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
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает имя класса данного объекта.
Объявление
Objective C
const char * object_getClassName ( id obj );
Параметры
obj
Объект Objective C.
Возвращаемое значение
Имя то, класса который
obj
экземпляр.Оператор импорта
Objective C
@import ObjectiveC;
Доступность
Доступный в iOS 2.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
Доступность
Доступный в iOS 2.0 и позже.
-
Устанавливает класс объекта.
Объявление
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
Доступность
Доступный в iOS 2.0 и позже.
-
Получает список зарегистрированных определений классов.
Объявление
Swift
func objc_getClassList(_
buffer
: AutoreleasingUnsafeMutablePointer<AnyClass?>, _bufferLen
: Int32) -> Int32Objective C
int objc_getClassList ( Class *buffer, int bufferCount );
Параметры
buffer
Массив
Class
значения. На выводе, каждомClass
оцените указывает на одно определение класса, до такжеbufferLen
или общее количество зарегистрированных классов, какой бы ни меньше. Можно передатьNULL
получить общее количество зарегистрированных определений классов, фактически не получая определений классов.bufferLen
Целочисленное значение. Передайте число указателей, для которых Вы выделили площадь в
buffer
. По возврату эта функция заполняет только это число элементов. Если это число является меньше, чем число зарегистрированных классов, эта функция возвращает произвольное подмножество зарегистрированных классов.Возвращаемое значение
Целочисленное значение, указывающее общее количество зарегистрированных классов.
Обсуждение
Библиотека времени выполнения Objective C автоматически регистрирует все классы, определенные в Вашем исходном коде. Можно создать определения классов во время выполнения и зарегистрировать их в
objc_addClass
функция.Перечисление 1 демонстрирует, как использовать эту функцию для получения всех определений классов, зарегистрированных во времени выполнения Objective C в текущем процессе.
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
Доступность
Доступный в iOS 2.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
Доступность
Доступный в iOS 3.1 и позже.
См. также
-
Возвращает определение класса указанного класса.
Объявление
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
Доступность
Доступный в iOS 2.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
Доступность
Доступный в iOS 2.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
Доступность
Доступный в iOS 2.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
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает имя переменной экземпляра.
Объявление
Swift
func ivar_getName(_
v
: Ivar) -> UnsafePointer<Int8>Objective C
const char * ivar_getName ( Ivar v );
Возвращаемое значение
Струна до, содержащая имя переменной экземпляра.
Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает строку типа переменной экземпляра.
Объявление
Swift
func ivar_getTypeEncoding(_
v
: Ivar) -> UnsafePointer<Int8>Objective C
const char * ivar_getTypeEncoding ( Ivar v );
Возвращаемое значение
Струна до, содержащая кодирование типа переменной экземпляра.
Обсуждение
Для возможных значений см. Руководство по программированию времени выполнения Objective C> Введите кодировки.
Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает смещение переменной экземпляра.
Объявление
Objective C
ptrdiff_t ivar_getOffset ( Ivar v );
Обсуждение
Например, переменные типа
id
или другие типы объектов, вызватьobject_getIvar
иobject_setIvar
вместо того, чтобы использовать это смещение для доступа к данным переменной экземпляра непосредственно.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Устанавливает присваиваемое значение для данного объекта с помощью данного ключа и политики ассоциации.
Объявление
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
Доступность
Доступный в iOS 3.1 и позже.
-
Возвращает значение, связанное с данным объектом для данного ключа.
Объявление
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
Доступность
Доступный в iOS 3.1 и позже.
См. также
-
Удаляет все ассоциации для данного объекта.
Объявление
Swift
func objc_removeAssociatedObjects(_
object
: AnyObject!)Objective C
void objc_removeAssociatedObjects ( id object );
Параметры
object
Объект, поддерживающий связанные объекты.
Обсуждение
Основная цель этой функции состоит в том, чтобы упростить возвращать объект «нетронутому состоянию”. Вы не должны использовать эту функцию для общего удаления ассоциаций от объектов, так как это также удаляет ассоциации, которые другие клиенты, возможно, добавили к объекту. Обычно необходимо использовать
objc_setAssociatedObject
с anil
значение для очистки ассоциации.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 3.1 и позже.
Когда это встречается с вызовом метода, компилятор мог бы генерировать вызов к любой из нескольких функций для выполнения фактической отгрузки сообщения, в зависимости от получателя, возвращаемого значения и параметров. Можно использовать эти функции, чтобы динамично вызвать методы от собственного простого кода К или использовать формы параметра, не разрешенные 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;
Доступность
Доступный в iOS 2.0 и позже.
-
Отправляет сообщение с возвращаемым значением структуры данных к экземпляру класса.
Объявление
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;
Доступность
Доступный в iOS 2.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;
Доступность
Доступный в iOS 2.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;
Доступность
Доступный в iOS 2.0 и позже.
-
Вызывает реализацию указанного метода.
Объявление
Objective C
id method_invoke ( id receiver, Method m, ... );
Параметры
receiver
Указатель на экземпляр класса, на который Вы хотите вызвать метод. Это значение не должно быть
nil
.m
Метод, реализацию которого Вы хотите вызвать.
...
Список аргумента переменной, содержащий параметры методу.
Возвращаемое значение
Возвращаемое значение метода.
Обсуждение
Используя эту функцию для вызова реализации метода быстрее, чем вызов
method_getImplementation
иmethod_getName
.Оператор импорта
Objective C
@import ObjectiveC;
Доступность
Доступный в iOS 2.0 и позже.
-
Вызывает реализацию указанного метода, возвращающего структуру данных.
Объявление
Objective C
void method_invoke_stret ( id receiver, Method m, ... );
Параметры
receiver
Указатель на экземпляр класса, на который Вы хотите вызвать метод. Это значение не должно быть
nil
.m
Метод, реализацию которого Вы хотите вызвать.
...
Список аргумента переменной, содержащий параметры методу.
Обсуждение
Используя эту функцию для вызова реализации метода быстрее, чем вызов
method_getImplementation
иmethod_getName
.Оператор импорта
Objective C
@import ObjectiveC;
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает имя метода.
Объявление
Swift
func method_getName(_
method
: Method) -> SelectorObjective C
SEL method_getName ( Method m );
Параметры
method
Метод для проверки.
Возвращаемое значение
Указатель типа SEL.
Обсуждение
Для получения имени метода как струны до вызвать
sel_getName(method_getName(method))
.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает реализацию метода.
Объявление
Swift
func method_getImplementation(_
method
: Method) -> IMPObjective C
IMP method_getImplementation ( Method m );
Параметры
method
Метод для проверки.
Возвращаемое значение
Указатель функции типа
IMP
.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает строку, описывающую параметр метода и типы возврата.
Объявление
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
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает строку, описывающую тип возврата метода.
Объявление
Swift
func method_copyReturnType(_
method
: Method) -> UnsafeMutablePointer<Int8>Objective C
char * method_copyReturnType ( Method m );
Параметры
method
Метод для проверки.
Возвращаемое значение
Струна до, описывающая тип возврата. Необходимо освободить строку с
free()
.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает строку, описывающую единственный тип параметра метода.
Объявление
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
Доступность
Доступный в iOS 2.0 и позже.
-
Возвраты ссылкой строка, описывающая тип возврата метода.
Объявление
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
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает число параметров, принятых методом.
Объявление
Swift
func method_getNumberOfArguments(_
method
: Method) -> UInt32Objective C
unsigned int method_getNumberOfArguments ( Method m );
Параметры
method
Указатель на a
Method
структура данных. Передайте рассматриваемый метод.Возвращаемое значение
Целое число, содержащее число параметров, принято данным методом.
Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Возвраты ссылкой строка, описывающая единственный тип параметра метода.
Объявление
Swift
func method_getArgumentType(_
m
: Method, _index
: UInt32, _dst
: UnsafeMutablePointer<Int8>, _dst_len
: Int)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
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает структуру описания метода для указанного метода.
Объявление
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
Доступность
Доступный в iOS 2.0 и позже.
-
Устанавливает реализацию метода.
Объявление
Swift
func method_setImplementation(_
m
: Method, _imp
: IMP) -> IMPObjective C
IMP method_setImplementation ( Method m, IMP imp );
Возвращаемое значение
Предыдущая реализация метода.
Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Обменивается реализациями двух методов.
Объявление
Обсуждение
Это - атомарная версия следующего:
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
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает имена всех загруженных платформ 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
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает имя динамической библиотеки класс, порожденный из.
Объявление
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
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает имена всех классов в указанной библиотеке или платформе.
Объявление
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
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает имя метода, указанного данным селектором.
Объявление
Objective C
const char * sel_getName ( SEL sel );
Параметры
aSelector
Указатель типа
SEL
. Передайте селектор, имя которого Вы хотите определить.Возвращаемое значение
Струна до, указывающая имя селектора.
Оператор импорта
Objective C
@import ObjectiveC;
Доступность
Доступный в iOS 2.0 и позже.
-
Регистрирует метод в системе времени выполнения Objective C, отображает имя метода на селектор и возвращает селекторное значение.
Объявление
Objective C
SEL sel_registerName ( const char *str );
Параметры
str
Указатель на струну до. Передайте имя метода, который Вы хотите зарегистрировать.
Возвращаемое значение
Указатель типа
SEL
указание селектора для именованного метода.Обсуждение
Необходимо зарегистрировать имя метода в системе времени выполнения Objective C для получения селектора метода, прежде чем можно будет добавить метод к определению класса. Если имя метода было уже зарегистрировано, эта функция просто возвращает селектор.
Оператор импорта
Objective C
@import ObjectiveC;
Доступность
Доступный в iOS 2.0 и позже.
-
Регистрирует имя метода в системе времени выполнения Objective C.
Объявление
Objective C
SEL sel_getUid ( const char *str );
Параметры
str
Указатель на струну до. Передайте имя метода, который Вы хотите зарегистрировать.
Возвращаемое значение
Указатель типа
SEL
указание селектора для именованного метода.Обсуждение
Реализация этого метода идентична реализации
sel_registerName
.Оператор импорта
Objective C
@import ObjectiveC;
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает булево значение, указывающее, равны ли два селектора.
Объявление
Swift
func sel_isEqual(_
lhs
: Selector, _rhs
: Selector) -> BoolObjective C
BOOL sel_isEqual ( SEL lhs, SEL rhs );
Параметры
lhs
Селектор для сравнения
rhs
.rhs
Селектор для сравнения
lhs
.Возвращаемое значение
YES
true
еслиrhs
иrhs
равны, иначеNO
false
.Обсуждение
sel_isEqual
эквивалентно==
.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает указанный протокол.
Объявление
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
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает массив всех протоколов, известных времени выполнения.
Объявление
Swift
func objc_copyProtocolList(_
outCount
: UnsafeMutablePointer<UInt32>) -> AutoreleasingUnsafeMutablePointer<Protocol?>Objective C
Protocol ** objc_copyProtocolList ( unsigned int *outCount );
Параметры
outCount
По возврату, содержит число протоколов в возвращенном массиве.
Возвращаемое значение
Массив C всех протоколов, известных времени выполнения. Массив содержит
*outCount
указатели, сопровождаемые aNULL
разделитель. Необходимо освободить список сfree()
.Обсуждение
Эта функция получает блокировку во время выполнения.
Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Создает новый экземпляр протокола.
Объявление
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
Доступность
Доступный в iOS 4.3 и позже.
См. также
-
Регистрирует недавно создаваемый протокол во времени выполнения 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
Доступность
Доступный в iOS 4.3 и позже.
См. также
-
Добавляет метод к протоколу.
Объявление
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
протокол. ЕслиYES
true
, метод является требуемым методом; еслиNO
false
, метод является дополнительным методом.isInstanceMethod
Булевская переменная, указывающая, является ли метод методом экземпляра. Если
YES
true
, метод является методом экземпляра; еслиNO
false
, метод является методом класса.Обсуждение
Для добавления метода к протоколу с помощью этой функции протокол должен находиться в работе. Т.е. необходимо добавить любые методы к
proto
перед регистрацией его во времени выполнения Objective C (черезobjc_registerProtocol
функция).Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 4.3 и позже.
-
Добавляет зарегистрированный протокол к другому находящемуся в работе протоколу.
Объявление
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
Доступность
Доступный в iOS 4.3 и позже.
-
Добавляет свойство к находящемуся в работе протоколу.
Объявление
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
протокол. ЕслиYES
true
, методы доступа свойства являются требуемыми методами; еслиNO
false
, методы доступа свойства являются дополнительными методами.isInstanceProperty
Булевская переменная, указывающая, являются ли методы доступа свойства методами экземпляра. Если
YES
true
, методы доступа свойства являются методами экземпляра.YES
true
единственное значение, допускал свойство. В результате, если Вы устанавливаете это значение вNO
false
, свойство не будет добавлено к протоколу.Обсуждение
Протокол, к которому Вы хотите добавить свойство, должен находиться в работе — выделенный, но еще не зарегистрированный во времени выполнения Objective C (через
objc_registerProtocol
функция).Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 4.3 и позже.
-
Возвращает имя протокола.
Объявление
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
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает булево значение, указывающее, равны ли два протокола.
Объявление
Swift
func protocol_isEqual(_
proto
: Protocol!, _other
: Protocol!) -> BoolObjective C
BOOL protocol_isEqual ( Protocol *proto, Protocol *other );
Параметры
proto
Протокол.
other
Протокол.
Возвращаемое значение
YES
true
еслиproto
совпадает сother
, иначеNO
false
.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает массив описаний метода методов, соответствующих данной спецификации для данного протокола.
Объявление
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
Булево значение, указывающее, должны ли возвращенные методы быть требуемыми методами (передача
YES
true
указать требуемые методы).isInstanceMethod
Булево значение, указывающее, должны ли возвращенные методы быть методами экземпляра (передача
YES
true
указать методы экземпляра).outCount
По возврату, содержит число структур описания метода в возвращенном массиве.
Возвращаемое значение
Массив C
objc_method_description
структуры, содержащие имена и типыp
методы, указанныеisRequiredMethod
иisInstanceMethod
. Массив содержит*outCount
указатели, сопровождаемые aNULL
разделитель. Необходимо освободить список сfree()
.Если протокол не объявляет методов, соответствующих спецификации,
NULL
возвращается и*outCount
0
.Обсуждение
Методы в других протоколах, принятых этим протоколом, не включены.
Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает структуру описания метода для указанного метода данного протокола.
Объявление
Swift
func protocol_getMethodDescription(_
p
: Protocol!, _aSel
: Selector, _isRequiredMethod
: Bool, _isInstanceMethod
: Bool) -> objc_method_descriptionObjective 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
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает массив свойств, объявленных протоколом.
Объявление
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
указатели, сопровождаемые aNULL
разделитель. Необходимо освободить массив сfree()
.Если протокол не объявляет свойств,
NULL
возвращается и*outCount
0
.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает указанное свойство данного протокола.
Объявление
Swift
func protocol_getProperty(_
proto
: Protocol!, _name
: UnsafePointer<Int8>, _isRequiredProperty
: Bool, _isInstanceProperty
: Bool) -> objc_property_tObjective 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
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает массив протоколов, принятых протоколом.
Объявление
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
указатели, сопровождаемые aNULL
разделитель. Необходимо освободить массив сfree()
.Если протокол не объявляет свойств,
NULL
возвращается и*outCount
0
.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает булево значение, указывающее, соответствует ли один протокол другому протоколу.
Объявление
Swift
func protocol_conformsToProtocol(_
proto
: Protocol!, _other
: Protocol!) -> BoolObjective C
BOOL protocol_conformsToProtocol ( Protocol *proto, Protocol *other );
Параметры
proto
Протокол.
other
Протокол.
Возвращаемое значение
YES
true
еслиproto
соответствуетother
, иначеNO
false
.Обсуждение
Один протокол может включить другие протоколы с помощью того же синтаксиса что использование классов для принятия протокола:
@protocol ProtocolName < protocol list >
Все протоколы, перечисленные между угловыми скобками, считают частью протокола ProtocolName.
Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает имя свойства.
Объявление
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
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает строку атрибута свойства.
Объявление
Swift
func property_getAttributes(_
property
: objc_property_t) -> UnsafePointer<Int8>Objective C
const char * property_getAttributes ( objc_property_t property );
Возвращаемое значение
Струна до, содержащая атрибуты свойства.
Обсуждение
Формат строки атрибута описан в Заявленных Свойствах в Руководстве по программированию Времени выполнения Objective C.
Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращается значение свойства приписывают данный название атрибута.
Объявление
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
Доступность
Доступный в iOS 4.3 и позже.
-
Возвращает массив атрибутов свойства для данного свойства.
Объявление
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
Доступность
Доступный в iOS 4.3 и позже.
-
Вставленный компилятором, когда мутация обнаруживается во время 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
Доступность
Доступный в iOS 2.0 и позже.
См. также
-
Устанавливает текущий обработчик мутации.
Объявление
Swift
func objc_setEnumerationMutationHandler(_
handler
: CFunctionPointer<((AnyObject!) -> Void)>)Objective C
void objc_setEnumerationMutationHandler ( void (*handler)(id) );
Параметры
handler
Указатель функции к новому обработчику мутации.
Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 2.0 и позже.
-
Создает указатель на функцию, вызывающую указанный блок, когда вызывают метод.
Объявление
Swift
func imp_implementationWithBlock(_
block
: AnyObject!) -> IMPObjective 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
Доступность
Доступный в iOS 4.3 и позже.
См. также
-
Возвращает блок, связанный с
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
Доступность
Доступный в iOS 4.3 и позже.
См. также
-
Разъединяет блок с
IMP
это создавалось с помощьюimp_implementationWithBlock
, и выпускает копию создававшегося блока.Объявление
Swift
func imp_removeBlock(_
anImp
: IMP) -> BoolObjective C
BOOL imp_removeBlock ( IMP anImp );
Параметры
anImp
IMP
это создавалось с помощьюimp_implementationWithBlock
функция.Возвращаемое значение
YES
true
если блок был выпущен успешно; иначе,NO
false
(например, функциональные возвратыNO
false
если блок не использовался для созданияanImp
ранее).Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 4.3 и позже.
См. также
-
Загружает объект, на который ссылается слабый указатель, и возвращает его.
Объявление
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
Доступность
Доступный в iOS 5.0 и позже.
-
Хранит новое значение в 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
Доступность
Доступный в iOS 5.0 и позже.
-
Непрозрачный тип, представляющий класс Objective C.
Объявление
Objective C
typedef struct objc_class *Class;
Доступность
Доступный в iOS 4.0 и позже.
-
Непрозрачный тип, представляющий метод в определении класса.
Объявление
Swift
typealias Method = COpaquePointer
Objective C
typedef struct objc_method *Method;
Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 4.0 и позже.
-
Непрозрачный тип, представляющий переменную экземпляра.
Объявление
Swift
typealias Ivar = COpaquePointer
Objective C
typedef struct objc_ivar *Ivar;
Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 4.0 и позже.
-
Непрозрачный тип, представляющий категорию.
Объявление
Swift
typealias Category = COpaquePointer
Objective C
typedef struct objc_category *Category;
Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 4.0 и позже.
-
Непрозрачный тип, представляющий Objective C, объявил свойство.
Объявление
Swift
typealias objc_property_t = COpaquePointer
Objective C
typedef struct objc_property *objc_property_t;
Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 4.0 и позже.
-
Указатель на запуск реализации метода.
Объявление
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;
Доступность
Доступный в iOS 4.0 и позже.
-
Определяет метод Objective C.
Объявление
Swift
struct objc_method_description { var name: Selector var types: UnsafeMutablePointer<Int8> init() init(name
name
: Selector, typestypes
: UnsafeMutablePointer<Int8>) }Objective C
struct objc_method_description { SEL name; char *types; };
Поля
name
Имя метода во время выполнения.
types
Типы аргументов метода.
Доступность
Доступный в iOS 4.0 и позже.
-
Оптимизация производительности для вызовов метода. Содержит указатели на недавно используемые методы.
Объявление
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
typedef struct { const char *name; const char *value; } objc_property_attribute_t;
Поля
name
Имя атрибута.
value
Значение атрибута (обычно пустой).
Доступность
Доступный в iOS 4.3 и позже.
Это типы данных, представляющие объекты, классы и суперклассы.
id
указатель на экземпляр класса.objc_object
представляет экземпляр класса.objc_super
указывает суперкласс экземпляра.
-
Указатель на экземпляр класса.
Объявление
Objective C
typedef struct objc_object *id;
Оператор импорта
Objective C
@import ObjectiveC;
Доступность
Доступный в iOS 4.0 и позже.
-
Представляет экземпляр класса.
Объявление
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! init() init(receiver
receiver
: AnyObject!, super_classsuper_class
: AnyClass!) }Objective C
struct objc_super { id receiver; Class class; };
Поля
receiver
Указатель типа
id
. Указывает экземпляр класса.class
Указатель на
Class
структура данных. Указывает определенный суперкласс экземпляра для обмена сообщениями.Обсуждение
Компилятор генерирует
objc_super
структура данных, когда это встречаетсяsuper
ключевое слово как получатель сообщения. Это указывает определение класса определенного суперкласса, который должен быть передан.Доступность
Доступный в iOS 4.0 и позже.
-
Введите для представления булева значения.
Объявление
Objective C
typedef signed char BOOL;
Обсуждение
BOOL
явно подписывается так@encode(BOOL)
c
вместоC
даже если-funsigned-char
используется.Для значений посмотрите
“Boolean Values”
.Оператор импорта
Objective C
@import ObjectiveC;
Доступность
Доступный в iOS 4.0 и позже.
-
Введите для указания поведения ассоциации.
Объявление
Swift
typealias objc_AssociationPolicy = UInt
Objective C
typedef uintptr_t objc_AssociationPolicy;
Обсуждение
Для значений посмотрите
“Associative Object Behaviors”
.Оператор импорта
Objective C
@import ObjectiveC;
Swift
import ObjectiveC
Доступность
Доступный в iOS 4.0 и позже.
-
Этот макрос указывает, должны ли функции отгрузки быть брошены к надлежащему типу указателя функции.
Объявление
Swift
var OBJC_OLD_DISPATCH_PROTOTYPES: Int32 { get }
Objective C
#define OBJC_OLD_DISPATCH_PROTOTYPES 1
Константы
-
Этот макрос аннотирует класс, как являющийся корневым классом Objective C.
Объявление
Objective C
#define OBJC_ROOT_CLASS
Константы
-
OBJC_ROOT_CLASS
При определении корневого класса Objective C Вы получаете ошибку компилятора, указывающую, что класс определяется, не указывая базовый класс. Можно избежать этой ошибки компилятора путем предшествования определению корневого класса (т.е. перед
@interface
директива) сOBJC_ROOT_CLASS
.Доступный в iOS 7.0 и позже.
-
-
Этот макрос указывает, что значения, сохраненные в определенных локальных переменных, не должны быть настойчиво выпущены компилятором во время оптимизации.
Объявление
Objective C
#define NS_VALID_UNTIL_END_OF_SCOPE
Константы
-
NS_VALID_UNTIL_END_OF_SCOPE
Локальные переменные Знаков типа
id
или указатель на тип объекта ObjC так, чтобы значения, сохраненные в тех локальная переменная, не были настойчиво выпущены компилятором во время оптимизации. Вместо этого значения сохранены, или до переменная присваивается снова, или до конец объема локальной переменной (такой как в составном операторе или определении метода).Доступный в iOS 6.0 и позже.
-
-
Политики имели отношение к ассоциативным ссылкам.
Объявление
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
Указывает слабую ссылку на связанный объект.
Доступный в iOS 4.0 и позже.
-
OBJC_ASSOCIATION_RETAIN_NONATOMIC
Указывает сильную ссылку к связанному объекту, и что ассоциация не сделана атомарно.
Доступный в iOS 4.0 и позже.
-
OBJC_ASSOCIATION_COPY_NONATOMIC
Указывает, что связанный объект копируется, и что ассоциация не сделана атомарно.
Доступный в iOS 4.0 и позже.
-
OBJC_ASSOCIATION_RETAIN
Указывает сильную ссылку к связанному объекту, и что ассоциация сделана атомарно.
Доступный в iOS 4.0 и позже.
-
OBJC_ASSOCIATION_COPY
Указывает, что связанный объект копируется, и что ассоциация сделана атомарно.
Доступный в iOS 4.0 и позже.
-