objc_getAssociatedObject
返回與給定鍵的特定對象關聯的值。
ID objc_getAssociatedObject(ID對象,空白*鍵)
參數
對象
源對象的關聯。
關鍵
密鑰對的關聯。
返回值
與該鍵相關聯的值鍵為對象。
空房
可在OS X v10.6中及更高版本。
宣稱
objc / runtime.h
objc_getClass
返回指定類的類定義。
ID objc_getClass(為const char *名)
參數
名
來查找類的名稱。
返回值
已命名的類的Class對象,或無
如果類不與Objective-C的運行時注冊。
討論
objc_getClass
不同于objc_lookUpClass
中,如果類沒有注冊,objc_getClass
調用類的處理程序回調,然后檢查第二次看有無類被注冊。objc_lookUpClass
不會調用類的處理程序回調。
特別注意事項
此功能(之前到OS X 10.0版)的早期實現終止程序如果類不存在。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / runtime.h
objc_getClassList
獲得注冊的類定義的列表。
INT objc_getClassList(等級*緩沖區,詮釋bufferLen)
參數
緩沖區
數組類
的值。在輸出時,每一類
的值指向一個類定義,最多為bufferLen
或注冊類別的總數,以較低者為準。您可以通過空
獲得注冊的類定義的總數沒有實際獲取的任何類定義。
bufferLen
一個整數值。傳已為其在分配空間的指針數的緩沖區
。在返回時,該函數將填充元件僅這個號碼。如果這個數小于注冊的類的數量,則該函數返回注冊類的任意子集。
返回值
一個整數值,指示注冊的類的總數量。
討論
在Objective-C的運行時庫會自動記錄所有在源代碼中定義的類。你可以在運行時創建的類的定義,并與注冊它們objc_addClass
功能。
清單1展示了如何使用這個功能來檢索所有已注冊在當前進程中的Objective-C運行時的類定義。
清單1 使用objc_getClassList
INT numClasses;
類*類= NULL;
類= NULL;
numClasses = objc_getClassList(NULL,0);
如果(numClasses> 0)
{
班= malloc的(大小(類)* numClasses);
numClasses = objc_getClassList(類,numClasses);
免費(類);
}
特別注意事項
你不能假設你從這個函數獲得這個類的對象是來自繼承的類NSObject的
,所以你不能安全地呼吁這樣的類的任何方法,而沒有檢測方法,首先實現的。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / runtime.h
objc_getFutureClass
使用CoreFoundation的免費橋接。
類objc_getFutureClass(為const char *名)
特別注意事項
不要自己調用這個函數。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
objc_getMetaClass
返回指定類的元類的定義。
ID objc_getMetaClass(為const char *名)
參數
名
來查找類的名稱。
返回值
該類別
的命名類的元類對象,或者為零
如果類不與Objective-C的運行時注冊。
討論
如果對于指定的類的定義中未注冊,則該函數調用的類的處理程序的回調,然后檢查第二時間,以查看是否在類中注冊。然而,每一個類都必須有一個有效的元類的定義,所以元類的定義總是返回,無論是合法與否。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / runtime.h
objc_getProtocol
返回指定的協議。
協議* objc_getProtocol(為const char *名)
參數
名
協議的名稱。
返回值
指定的協議的名稱,或空
,如果沒有指定協議名稱可能會被發現。
討論
這個函數獲取運行時鎖定。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
objc_getRequiredClass
返回指定類的類定義。
ID objc_getRequiredClass(為const char *名)
參數
名
來查找類的名稱。
返回值
Class對象的命名類。
討論
這個功能是一樣的objc_getClass
,但終止進程,如果沒有找到這個類。
這個函數由ZeroLink,其中沒有找到一類是沒有ZeroLink編譯時鏈接錯誤。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / runtime.h
objc_loadWeak
加載由弱指針引用的對象并返回它。
ID objc_loadWeak(ID *位置)
參數
位置
弱指針的地址。
返回值
該對象所指向的位置,或零
,如果位置是零
。
討論
該功能通過加載一個弱指針引用的對象,保留和自動釋放該對象后返回。其結果是,該對象保持活著足夠長的主叫用戶來使用它。這個功能通常用于任何地方__weak
變量用于在表達式。
空房
可在OS X v10.7及更高版本。
宣稱
objc / runtime.h
objc_lookUpClass
返回指定類的類定義。
ID objc_lookUpClass(為const char *名)
參數
名
來查找類的名稱。
返回值
已命名的類的Class對象,或無
如果類不與Objective-C的運行時注冊。
討論
objc_getClass
是從這個函數不同,如果這個類沒有注冊,objc_getClass
調用類的處理程序回調,然后檢查第二次看有無類被注冊。該函數不調用類的處理程序回調。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / runtime.h
objc_msgSend
發送一個簡單的返回值的消息,一個類的實例。
ID objc_msgSend(ID自我,SEL運算,...)
參數
自
一個指針,指向類的要接收消息的實例。
OP
在處理該信息的方法的選擇。
......
可變參數列表包含參數的方法。
返回值
該方法的返回值。
討論
當它遇到一個方法調用時,編譯器會生成調用的功能之一objc_msgSend
,objc_msgSend_stret
,objc_msgSendSuper
或objc_msgSendSuper_stret
。發送到對象的超類的消息(使用超
關鍵字)使用的是發送objc_msgSendSuper
; 其他消息使用發送objc_msgSend
。有數據結構作為返回值的方法是使用發送objc_msgSendSuper_stret
和objc_msgSend_stret
。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / message.h
objc_msgSendSuper
發送一個消息,一個簡單的返回值的類的實例的超類。
ID objc_msgSendSuper(結構objc_super *超,SEL運算,...)
參數
超
一個指針,指向一個objc_super
數據結構。傳遞值確定郵件發送給包括要接收消息和超在其開始搜索的方法實現的類的實例的上下文。
OP
類型的指針SEL
。通過將處理該信息的方法的選擇。
......
可變參數列表包含參數的方法。
返回值
確定了該方法的返回值的運算。
討論
當它遇到一個方法調用時,編譯器會生成調用的功能之一objc_msgSend
,objc_msgSend_stret
,objc_msgSendSuper
或objc_msgSendSuper_stret
。發送到對象的超類的消息(使用超
關鍵字)使用的是發送objc_msgSendSuper
; 其他消息使用發送objc_msgSend
。有數據結構作為返回值的方法是使用發送objc_msgSendSuper_stret
和objc_msgSend_stret
。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / message.h
objc_msgSendSuper_stret
發送消息與數據結構返回值的類的實例的超類。
無效objc_msgSendSuper_stret(結構objc_super *超,SEL運算,...)
參數
超
一個指針,指向一個objc_super
數據結構。傳遞值確定郵件發送給包括要接收消息和超在其開始搜索的方法實現的類的實例的上下文。
OP
類型的指針SEL
。通過該方法的選擇。
......
可變參數列表包含參數的方法。
討論
當它遇到一個方法調用時,編譯器會生成調用的功能之一objc_msgSend
,objc_msgSend_stret
,objc_msgSendSuper
或objc_msgSendSuper_stret
。發送到對象的超類的消息(使用超
關鍵字)使用的是發送objc_msgSendSuper
; 其他消息使用發送objc_msgSend
。有數據結構作為返回值的方法是使用發送objc_msgSendSuper_stret
和objc_msgSend_stret
。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / message.h
objc_msgSend_fpret
發送消息浮點返回值的類的實例。
雙objc_msgSend_fpret(ID自我,SEL運算,...)
參數
自
一個指針,指向類的要接收消息的實例。
OP
在處理該信息的方法的選擇。
......
可變參數列表包含參數的方法。
討論
在i386平臺,ABI的功能為返回一個浮點數值與對函數返回一個整數類型不兼容。在i386平臺,因此,您必須使用objc_msgSend_fpret
的功能,對于函數返回非整數類型。對于浮動
或長雙
返回類型,施放功能,適當的函數指針類型第一。
這個功能沒有被使用在PPC或PPC64平臺。
空房
可在OS X 10.4及更高版本。
宣稱
objc / message.h
objc_msgSend_stret
發送一個數據結構,返回值的消息,一個類的實例。
無效objc_msgSend_stret(void *的stretAddr,ID theReceiver,SEL theSelector,...)
參數
stretAddr
在輸入時,指針指向的內存足夠大,以包含該方法的返回值的塊。在輸出時,包含該方法的返回值。
theReceiver
一個指針,指向類的實例,它是接收消息。
theSelector
類型的指針SEL
。通過處理該信息的方法的選擇。
......
可變參數列表包含參數的方法。
討論
當它遇到一個方法調用時,編譯器會生成調用的功能之一objc_msgSend
,objc_msgSend_stret
,objc_msgSendSuper
或objc_msgSendSuper_stret
。發送到對象的超類的消息(使用超
關鍵字)使用的是發送objc_msgSendSuper
; 其他消息使用發送objc_msgSend
。有數據結構作為返回值的方法是使用發送objc_msgSendSuper_stret
和objc_msgSend_stret
。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / message.h
objc_registerClassPair
寄存器,使用分配的一類objc_allocateClassPair
。
無效objc_registerClassPair(CLS級)
參數
CLS
類要注冊。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
objc_registerProtocol
注冊一個與Objective-C運行新創建的協議。
無效objc_registerProtocol(協議*原)
參數
原
該協議要與Objective-C的運行時進行登記。
討論
當您創建使用一個新的協議objc_allocateProtocol
,然后,通過調用這個函數的Objective-C的運行時注冊它。經過協議成功注冊,這是不可改變的,并準備使用。
空房
可在OS X v10.7及更高版本。
宣稱
objc / runtime.h
objc_removeAssociatedObjects
刪除給定對象的所有關聯。
無效objc_removeAssociatedObjects(ID對象)
參數
對象
它維護相關聯的對象的對象。
討論
此功能的主要目的是可以很容易將對象返回到“原始狀態”,你不應該使用這個函數從對象一般去除關聯,因為它也消除了其他客戶可能已添加到該對象關聯。通常情況下,你應該使用objc_setAssociatedObject
與零
值,以清除關聯。
空房
可在OS X v10.6中及更高版本。
宣稱
objc / runtime.h
objc_setAssociatedObject
設置使用給定的鍵和關聯政策給定對象關聯的值。
無效objc_setAssociatedObject(ID對象,空白*鍵,值id,objc_AssociationPolicy政策)
參數
對象
源對象的關聯。
關鍵
密鑰對的關聯。
值
該值與密鑰相關聯的密鑰的目的。通過無以清除現有的關聯。
政策
該政策的相關性。對于可能的值,請參閱“關聯對象的行為。”
空房
可在OS X v10.6中及更高版本。
宣稱
objc / runtime.h
objc_setEnumerationMutationHandler
設置電流突變處理。
無效objc_setEnumerationMutationHandler(無效(*處理器)(ID))
參數
處理程序
函數指針到新的變異處理程序。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
objc_setFutureClass
使用CoreFoundation的免費橋接。
無效objc_setFutureClass(CLS級,為const char *名)
特別注意事項
不要自己調用這個函數。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
objc_storeWeak
存儲在一個新值__weak
變量。
ID objc_storeWeak(ID *的位置,ID OBJ)
參數
位置
弱指針的地址。
OBJ
新的對象,你要弱指針現在指向。
返回值
存儲在所述值的位置(即,物鏡)。
討論
此功能通常用于任何地方__weak
變量賦值的目標。
空房
可在OS X v10.7及更高版本。
宣稱
objc / runtime.h
object_copy
返回給定對象的副本。
ID object_copy(ID OBJ,為size_t大小)
參數
OBJ
一個Objective-C的對象。
大小
對象的大小物鏡。
返回值
副本OBJ。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / runtime.h
object_dispose
釋放由給定對象占用的內存。
ID object_dispose(ID OBJ)
參數
OBJ
一個Objective-C的對象。
返回值
無
。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / runtime.h
object_getClass
返回類的對象。
類object_getClass(ID對象)
參數
對象
對象要檢查。
返回值
其中的類對象對象是一個實例,或無
如果對象是零
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
object_getClassName
返回給定對象的類名。
為const char * object_getClassName(ID OBJ)
參數
OBJ
一個Objective-C的對象。
返回值
類,其中的名稱物鏡是一個實例。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / runtime.h
object_getIndexedIvars
返回一個指向分配一個實例給定對象的任何額外的字節。
OBJC_EXPORT無效* object_getIndexedIvars(ID OBJ)
參數
OBJ
一個Objective-C的對象。
返回值
一個指向分配任何額外的字節OBJ。如果OBJ沒有被分配任何額外的字節,然后提領返回的指針是不確定的。
討論
這個函數返回一個指向分配該實例的任何額外的字節(具體由class_createInstance
與extraBytes> 0)。這個存儲器如下物件的普通實例變量,但可能并不相鄰于最后的ivar。
返回指針是保證指針尺寸對齊,即使下面的對象的最后的ivar的面積小于對準。比指針的大小對齊更大從未得到保證,即使下面的對象的最后的ivar的面積比更一致。
在垃圾收集環境中,內存掃描保守。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / objc.h
object_getInstanceVariable
獲得一個類的實例的實例變量的值。
伊瓦爾object_getInstanceVariable(ID OBJ,為const char 名,空白* outValue)
參數
OBJ
一個指針,指向一個類的實例。通過含有該實例變量,其值要獲取的對象。
名
C字符串。通過實例變量的值,你希望得到的名字。
outValue
在返回時,包含一個指向該實例變量的值。
返回值
的指針伊娃
的數據結構,它定義了指定的實例變量的類型和名稱的名稱
。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / runtime.h
object_getIvar
讀一個實例變量中的對象的值。
ID object_getIvar(ID對象,伊娃伊娃)
參數
對象
包含實例變量要讀取其值的對象。
伊娃
在伊瓦描述實例變量,你想讀的價值。
返回值
由指定的實例變量的值伊娃,或者為零
,如果對象是零
。
討論
object_getIvar
比快object_getInstanceVariable
如果已經知道伊娃的實例變量。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
object_setClass
設置類的對象的。
類object_setClass(ID對象,類CLS)
參數
對象
修改的對象。
SEL
一個Class對象。
返回值
以前的值對象的類,或者無
,如果對象是零
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
object_setInstanceVariable
改變一個類的實例的實例變量的值。
伊瓦爾object_setInstanceVariable(ID OBJ,為const char *的名字,void *的值)
參數
OBJ
一個指針,指向一個類的實例。通過包含實例變量,它的值要修改的對象。
名
C字符串。通過實例變量,它的值要修改的名稱。
值
對實例變量的新值。
返回值
的指針伊娃
的數據結構,它定義了指定的實例變量的類型和名稱的名稱
。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / runtime.h
object_setIvar
設置一個實例變量中的對象的值。
無效object_setIvar(ID對象,伊娃伊娃,值id)
參數
對象
包含實例變量要設置其值的對象。
伊娃
在伊瓦描述實例變量要設置其值。
值
對實例變量的新值。
討論
object_setIvar
比快object_setInstanceVariable
如果已經知道伊娃的實例變量。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
property_copyAttributeList
返回屬性的屬性給定屬性的數組。
objc_property_attribute_t * property_copyAttributeList(objc_property_t財產,無符號整型* outCount)
參數
物業
你要復制的屬性,它的屬性。
outCount
數組中返回的屬性的數量。
返回值
物業數組屬性。您必須釋放與陣列免費的()
。
空房
可在OS X v10.7及更高版本。
宣稱
objc / runtime.h
property_copyAttributeValue
返回給定屬性名稱的屬性屬性的值。
char *的property_copyAttributeValue(objc_property_t財產,為const char *屬性名稱)
參數
物業
該物業的價值你感興趣的內容。
屬性名稱
C字符串表示的屬性的名稱。
返回值
該值的字符串屬性名稱的屬性,如果存在的財產 ; 否則,零
。您必須釋放與返回值的字符串免費()
。
空房
可在OS X v10.7及更高版本。
宣稱
objc / runtime.h
property_getAttributes
返回一個屬性的屬性字符串。
為const char * property_getAttributes(objc_property_t屬性)
返回值
C字符串包含屬性的屬性。
討論
屬性字符串的格式說明“,宣布屬性”中的Objective-C運行時編程指南。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
property_getName
返回一個屬性的名稱。
為const char * property_getName(objc_property_t屬性)
返回值
C字符串包含屬性的名稱。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
protocol_addMethodDescription
添加一個方法的協議。
無效protocol_addMethodDescription(協議*原,SEL名,為const char *類型,布爾isRequiredMethod,布爾isInstanceMethod)
參數
原
該協議要添加一個方法。
名
要添加的方法的名稱。
類型
交流字符串,表示要添加的方法的簽名。
isRequiredMethod
布爾值,表示該方法是必需的方法原協議。如果為是
,則該方法是必需的方法; 若否
,該方法是可選的方法。
isInstanceMethod
布爾表示方法是否是一個實例方法。如果為是
,則該方法是一個實例方法; 若否
,該方法是一類方法。
討論
要使用此功能的方法添加到協議中,協議必須是正在建設中。也就是說,你必須添加任何方法來原你的Objective-C的運行時(通過注冊它之前objc_registerProtocol
功能)。
空房
可在OS X v10.7及更高版本。
宣稱
objc / runtime.h
protocol_addProperty
添加一個屬性的協議正在建設中。
無效protocol_addProperty(協議*原,為const char *名,常量objc_property_attribute_t *屬性,無符號整型attributeCount,布爾isRequiredProperty,布爾isInstanceProperty)
參數
原
該協議要添加屬性。
名
你要添加的屬性的名稱。
屬性
物業數組屬性。
attributeCount
物業數量的屬性。
isRequiredProperty
布爾值,表示該屬性的訪問器方法所需的方法原協議。如果是
,該屬性的訪問器方法所需的方法; 若否
,該屬性的訪問器方法是可選的方法。
isInstanceProperty
布爾值,表示該屬性的訪問器方法是實例方法。如果是
,該屬性的訪問器方法是實例方法。是
是允許的屬性的唯一值。因此,如果您將此值設置為否
,則屬性將不會被加入到協議。
討論
該協議要添加的屬性必須是正在建設中,撥出而尚未登記的Objective-C的運行時(通過objc_registerProtocol
功能)。
空房
可在OS X v10.7及更高版本。
宣稱
objc / runtime.h
protocol_addProtocol
增加了一個注冊協議到另一個協議,正在建設中。
無效protocol_addProtocol(協議原,協議補充)
參數
原
該協議要注冊協議加入。
此外
注冊協議要添加到原。
討論
要添加到(協議原)必須是正在建設中,撥出而尚未登記的Objective-C的運行時。要添加(該協議除)必須已經注冊。
空房
可在OS X v10.7及更高版本。
宣稱
objc / runtime.h
protocol_conformsToProtocol
返回一個布爾值,表示一個協議是否符合其他協議。
布爾protocol_conformsToProtocol(協議原,協議除外)
參數
原
的協議。
其他
的協議。
返回值
是的
,如果原符合其他,否則無
。
討論
一個協議可以結合使用類使用采用協議相同的語法其他協議:
@protocol ProtocolName <協議列表>
所有角括號之間列出的協議被認為是ProtocolName協議的一部分。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
protocol_copyMethodDescriptionList
返回滿足給定的規范給定的協議方法方法描述的數組。
結構objc_method_description * protocol_copyMethodDescriptionList(協議* P,布爾isRequiredMethod,布爾isInstanceMethod,無符號整型* outCount)
參數
p
的協議。
isRequiredMethod
一個布爾值,表示返回的方法有否需要的方法(通過是
可以指定所需的方法)。
isInstanceMethod
一個布爾值,表示返回的方法是否應為實例方法(傳遞是
指定實例方法)。
outCount
返回時,包含的方法的描述結構的返回數組中的號碼。
返回值
交流陣objc_method_description
包含的名稱和類型結構p通過指定的方式isRequiredMethod和isInstanceMethod。該數組包含* outCount
指針后跟一個空
終止符。您必須釋放列表免費的()
。
如果協議沒有聲明符合規范的方法,NULL,
則返回和* outCount
為0
。
討論
在采用這個協議的其他協議的方法不包括在內。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
protocol_copyPropertyList
返回由協議中聲明的屬性的數組。
objc_property_t * protocol_copyPropertyList(協議協議,無符號整型 outCount)
參數
原
的協議。
outCount
返回時,包含返回的數組中元素的個數。
返回值
交流數組類型的指針objc_property_t
描述了聲明的屬性原。不包括通過該協議的其他協議中聲明的任何屬性。該數組包含* outCount
指針后跟一個空
終止符。您必須釋放與陣列免費的()
。
如果協議沒有聲明的屬性,NULL,
則返回和* outCount
為0
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
protocol_copyProtocolList
返回所通過的協議的協議的數組。
協議** protocol_copyProtocolList(協議原,無符號整型 outCount)
參數
原
的協議。
outCount
返回時,包含返回的數組中元素的個數。
返回值
交流陣列通過協議原。該數組包含* outCount
指針后跟一個空
終止符。您必須釋放與陣列免費的()
。
如果協議沒有聲明的屬性,NULL,
則返回和* outCount
為0
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
protocol_getMethodDescription
返回指定給定的協議的方法的方法描述結構。
結構objc_method_description protocol_getMethodDescription(協議* P,SEL ASEL,布爾isRequiredMethod,布爾isInstanceMethod)
參數
p
的協議。
ASEL
選擇器
isRequiredMethod
一個布爾值,表示是否ASEL是必需的方法。
isInstanceMethod
一個布爾值,表示是否ASEL是一個實例方法。
返回值
一個objc_method_description
結構,描述根據指定的方法ASEL,isRequiredMethod和isInstanceMethod用于協議p。
如果該協議不包含所指定的方法,返回一個objc_method_description
與價值結構{NULL,NULL}
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
protocol_getName
返回一個協議的名稱。
為const char * protocol_getName(協議* P)
參數
p
的協議。
返回值
該協議的名稱p為C字符串。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
protocol_getProperty
返回給定協議的指定屬性。
objc_property_t protocol_getProperty(協議*原,為const char *的名字,布爾isRequiredProperty,布爾isInstanceProperty)
參數
原
的協議。
名
一個屬性的名稱。
isRequiredProperty
一個布爾值,表示是否名字是必需的屬性。
isInstanceProperty
一個布爾值,表示是否名字是實例屬性。
返回值
該物業指定的名稱,isRequiredProperty和isInstanceProperty為原,或NULL
如果沒有原始的屬性是否符合規范。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
protocol_isEqual
返回一個布爾值,表示兩個協議是否相等。
布爾protocol_isEqual(協議原,協議除外)
參數
原
的協議。
其他
的協議。
返回值
是的
,如果原相同等,否則無
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
sel_getName
返回由給定的選擇器指定的方法的名稱。
為const char * sel_getName(SEL aSelector)
參數
aSelector
類型的指針SEL
。通過他的名字,你想確定選擇。
返回值
C字符串表示選擇器的名稱。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / runtime.h
sel_getUid
注冊到Objective-C的運行時系統的方法名。
SEL sel_getUid(為const char * str中)
參數
海峽
一個指針,指向一個C字符串。傳給你要注冊的方法的名稱。
返回值
類型的指針SEL
指定選擇器的命名方法。
討論
該方法的實現是相同的實施sel_registerName
。
版本說明
在此之前的OS X 10.0版本,這個方法試圖找到選擇映射到給定的名稱,返回NULL,
如果沒有找到選擇。這對安全性進行了改變,因為它指出,許多這個函數的調用者沒有檢查返回值NULL
。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / objc.h
sel_isEqual
返回一個布爾值,表示兩個選擇是否相等。
布爾sel_isEqual(SEL LHS,SEL RHS)
參數
LHS
選擇與比較RHS。
RHS
選擇與比較LHS。
返回值
是的
,如果RHS和RHS是平等的,否則無
。
討論
sel_isEqual
相當于==
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
sel_registerName
注冊到Objective-C的運行時系統的方法,映射方法名選擇器,并返回選擇值。
SEL sel_registerName(為const char * str中)
參數
海峽
一個指針,指向一個C字符串。傳給你要注冊的方法的名稱。
返回值
類型的指針SEL
指定選擇器的命名方法。
討論
您必須注冊一個方法名與Objective-C的運行時系統,以獲得該方法的選擇之前,你可以添加方法的類的定義。如果方法名稱已被注冊,該函數只返回選擇。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / runtime.h
數據類型
類定義的數據結構
類
不透明類型,表示一個Objective-C類。
typedef結構objc_class *級;
空房
可在OS X v10.6中及更高版本。
宣稱
objc / objc.h
方法
不透明類型,表示一個類定義的方法。
typedef結構objc_method *方法;
空房
可在OS X v10.6中及更高版本。
宣稱
objc / runtime.h
伊瓦爾
不透明類型,代表了一個實例變量。
typedef結構objc_ivar *伊瓦爾;
空房
可在OS X v10.6中及更高版本。
宣稱
objc / runtime.h
分類
不透明類型,代表一個類別。
typedef結構objc_category *類別;
空房
可在OS X v10.6中及更高版本。
宣稱
objc / runtime.h
objc_property_t
不透明類型,代表了Objective-C中聲明的屬性。
typedef結構objc_property * objc_property_t;
空房
可在OS X v10.6中及更高版本。
宣稱
objc / runtime.h
進出口
一個指針,指向的方法實施的開始。
ID(* IMP)(身份證,SEL,...)
討論
這個數據類型為指針,以實現該方法的功能的啟動。該功能使用標準C調用約定,實現當前的CPU架構。第一個參數是指向自我
(也就是這個類,或者對于一個類的方法,一個指向元類的特定實例的內存)。第二個參數是方法選擇。該方法的參數如下。
SEL
定義一個不透明的類型表示的方法選擇。
typedef結構objc_selector * SEL;
討論
方法選擇器被用來表示一個方法在運行時的名稱。一種方法是選擇已注冊(或“映射”)與Objective-C運行C字符串。由編譯器生成的選擇器會自動運行時,當類被加載映射。
您可以在運行時添加新的選擇和檢索利用現有的功能選擇sel_registerName
。
當使用選擇器,您必須使用從返回的值sel_registerName
或Objective-C的編譯器指令@selector()
。你不能簡單地投了C字符串到SEL
。
空房
可在OS X v10.6中及更高版本。
宣稱
objc / objc.h
objc_method_description
定義一個Objective-C的方法。
結構objc_method_description { SEL名; char *的類型;};
場
名
該方法在運行時的名稱。
類型
該類型的方法參數。
空房
可在OS X v10.6中及更高版本。
宣稱
objc / runtime.h
objc_method_list
包含方法定義的數組。
結構objc_method_list{結構objc_method_list *過時;INT method_count;結構objc_method method_list [1];}
場
過時了
保留供將來使用。
method_count
一個整數,指定的方法清單陣列中的方法的數目。
method_list
數組方法
的數據結構。
空房
可在OS X V10.5及更高版本。
不推薦使用的OS X v10.5中。
不適用于64位應用程序。
宣稱
objc / runtime.h
objc_cache
性能優化的方法調用。包含指向最近使用過的方法。
結構objc_cache{unsigned int的面具;unsigned int類型占用;方法水桶[1];};
場
面膜
一個整數,指定分配緩存桶(減一)的總數。在方法查找,在Objective-C的運行時使用此字段來確定其開始的線性搜索索引水桶
陣。一個指針,指向一個方法的選擇是使用邏輯與操作(屏蔽,這一領域的指數=(面具和選擇器))
。這可作為一個簡單的散列算法。
占用
一個整數,指定所占用的緩存桶的總數。
桶
指針數組方法
的數據結構。該陣列可包含不超過面膜+ 1
項。注意,指針可以是NULL
,表示該高速緩沖桶是未占用的,并且占據桶可能不連續。該陣列可隨著時間的推移。
討論
要限制需要執行方法列出線性搜索經常訪問的方法,操作的定義,可以大大減緩方法查找,在Objective-C的運行時函數指針存儲在類中最近被調用方法的定義一個objc_cache
數據結構。
objc_protocol_list
代表的正式協議的列表。
結構objc_protocol_list{結構objc_protocol_list 旁邊;詮釋計數;協議列表[1];};
場
下一個
一個指向另一個objc_protocol_list
數據結構。
數
在此列表中的協議的數目。
列表
指針數組類
代表協議的數據結構。
討論
正式協議是一個類定義,聲明了一組方法,其中的類必須實現。這樣的類定義中沒有實例變量。一個類定義可以保證實現任意數量的正式協議。
空房
可在OS X v10.6中及更高版本。
不適用于64位應用程序。
宣稱
objc / runtime.h
objc_property_attribute_t
定義一個屬性的屬性。
typedef結構{ 為const char *名稱; 為const char *值;} objc_property_attribute_t;
場
名
該屬性的名稱。
值
該屬性的值(通常為空)。
空房
可在OS X v10.7及更高版本。
宣稱
objc / runtime.h
例如數據類型
這些都是表示對象,類和超類的數據類型。
ID
指向一個類的實例。
objc_object
表示一個類的實例。
objc_super
指定實例的父類。
ID
一個指針,指向一個類的實例。
typedef結構objc_object * ID;
空房
可在OS X v10.6中及更高版本。
宣稱
objc / objc.h
objc_object
表示一個類的實例。
結構objc_object { ISA類;};
場
ISA
其中一個指針,指向類定義這個對象是一個實例。
討論
當你創建一個特定的類的實例,所分配的內存中包含objc_object
數據結構,它直接后跟類的實例變量的數據。
在頁頭
和allocWithZone:
Foundation框架類NSObject的方法使用功能class_createInstance
創建objc_object
數據結構。
objc_super
指定實例的父類。
結構objc_super{ID接收器;Class類;};
場
接收器
類型的指針ID
。指定一個類的實例。
類
一個指針,指向一個類
的數據結構。指定實例消息的特定超。
討論
編譯器會生成objc_super
數據結構遇到的時候超
關鍵字作為信息的接收者。它指定要傳 ??遞消息的特定超類的類定義。
空房
可在OS X v10.6中及更高版本。
宣稱
objc / message.h
布爾值
BOOL
類型來表示一個布爾值。
的typedef符號字符BOOL;
討論
BOOL
明確正式簽訂@encode(布爾)
是?
而不是?
即使-funsigned,字符
被使用。
對于值,請參閱“布爾值”
。
特別注意事項
由于類型BOOL
實際上是字符
,它不表現在以同樣的方式為C _Bool
值或C + + 布爾值。例如,有條件的在下面的代碼會是假的在i386(和真正的在PPC):
- (BOOL)值{
返回256;
}
然后//
如果([個體值])doStuff();
相比之下,有條件的在下面的代碼將在所有平臺上(即使真正的sizeof(BOOL)== 1
):
- (布爾)值{
返回256;
}
然后//
如果([個體值])doStuff();
空房
可在OS X 10.1及更高版本。
宣稱
objc / objc.h
聯想參考
objc_AssociationPolicy
輸入到指定的關聯的行為。
的typedef uintptr_t的objc_AssociationPolicy;
討論
對于值,請參閱“關聯對象的行為”
。
空房
可在OS X v10.6中及更高版本。
宣稱
objc / runtime.h
常量
布爾值
這些宏定義方便的常量來表示布爾值。
#定義是(BOOL)1#定義編號(布爾)0
常量
是
定義是
為1
。
可在OS X 10.0版和更高版本。
宣布在objc / objc.h
。
否
定義編號
為0
。
可在OS X 10.0版和更高版本。
宣布在objc / objc.h
。
宣稱
objc.h
Null值
這些宏定義類和實例的空值。
#定義零__DARWIN_NULL#定義無__DARWIN_NULL
常量
無
定義ID
空實例。
可在OS X 10.0版和更高版本。
聲明中IONDRVLibraries.h
。
無
定義ID
為空類。
可在OS X 10.0版和更高版本。
宣布在objc / objc.h
。
宣稱
objc.h
調度函數原型
這個宏表示調度功能是否必須強制轉換為相應的函數指針類型。
#定義OBJC_OLD_DISPATCH_PROTOTYPES 1
常量
OBJC_OLD_DISPATCH_PROTOTYPES
OBJC_OLD_DISPATCH_PROTOTYPES == 0
強制執行調度功能必須強制轉換為相應的函數指針類型的規則。
可在OS X v10.8及更高版本。
宣布在objc / objc-api.h
。
宣稱
objc-api.h
Objective-C的根類
這個宏詮釋的一類作為是一個Objective-C的根類。
#定義OBJC_ROOT_CLASS
常量
OBJC_ROOT_CLASS
如果你定義一個Objective-C的根類,您會收到一個編譯錯誤,表明類沒有指定基類中定義。您可以通過在根類的定義(也就是前前避免這個編譯器錯誤@interface
指令)與OBJC_ROOT_CLASS
。
可在OS X v10.9及更高版本。
宣布在objc / objc-api.h
。
宣稱
objc-api.h
局部變量的存儲時間
這個宏表示存儲在特定的局部變量的值不應積極優化過程中釋放的編譯器。
#定義NS_VALID_UNTIL_END_OF_SCOPE
常量
NS_VALID_UNTIL_END_OF_SCOPE
標記類型的局部變量ID
或指針到ObjC對象類型,以便存儲到這些局部變量的值不積極優化過程中釋放的編譯器。相反,該值被保持,直到該變量被分配給一次,或局部變量的范圍的端部(如在一個復合語句的方法或定義)。
可在OS X v10.8及更高版本。
聲明中NSObjCRuntime.h
。
宣稱
NSObjCRuntime.h
關聯對象的行為
有關關聯引用的政策。
枚舉{ 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
指定一個弱引用關聯的對象。
可在OS X v10.6中及更高版本。
宣布在objc / runtime.h
。
OBJC_ASSOCIATION_RETAIN_NONATOMIC
指定的強引用關聯的對象,以及該組織不以原子制成。
可在OS X v10.6中及更高版本。
宣布在objc / runtime.h
。
OBJC_ASSOCIATION_COPY_NONATOMIC
指定關聯的對象被復制,以及該組織不以原子制成。
可在OS X v10.6中及更高版本。
宣布在objc / runtime.h
。
OBJC_ASSOCIATION_RETAIN
指定的強引用關聯的對象,而該組織是原子制成。
可在OS X v10.6中及更高版本。
宣布在objc / runtime.h
。
OBJC_ASSOCIATION_COPY
指定關聯的對象被復制,而該組織是原子制成。
可在OS X v10.6中及更高版本。
宣布在objc / runtime.h
。