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