官方源碼下載地址:http://download.csdn.net/detail/liangliang103377/8700843
概述
本文檔介紹了OS X的Objective-C 2.0運行庫支持的函數和數據結構。該功能是在發現共享庫實現/usr/lib/libobjc.A.dylib
。這個共享庫提供支持,為Objective-C語言的動態特性,并因此被所有的Objective-C應用程序鏈接。
該參考主要是為了開發Objective-C和其他語言之間的橋梁層,或低級別的調試。通常,您不需要在Objective-C編程時直接使用Objective-C的運行時庫。
在OS X實現了Objective-C的運行時庫是獨一無二的蘋果。對于其他平臺,GNU編譯器集提供了不同的執行情況,類似的API。本文只包括Mac OS X的執行情況。
低級別的Objective-C的運行時API是OS X 10.5版本顯著更新。許多功能和所有現有的數據結構將被替換為新的功能。舊的功能和結構已過時的32位和缺席的64位模式。該API限制幾個值到32位的整數,即使在64位模式下-級計數,計數的協議,每類方法,每個類實例變量,每個方法的參數,每個方法的sizeof(所有參數)和類的版本號。此外,新的Objective-C的ABI(此處不作討論),進一步約束大小(anInstance)為32位,而其他三個值,以24%的類比特的方法,每個類實例變量和大小(單伊娃)。最后,過時NXHashTable和NXMapTable被限制在4十億的項目。字符串編碼: 所有的char *
運行時API中,應考慮到有UTF-8編碼。
<code>“棄用”的意思是“過時的OS X 10.5版本的32位代碼,并禁止用于64位代碼。”</code>
誰應閱讀本文件
該文件的目的是為讀者誰可能有興趣學習的Objective-C的運行時。
因為這不是一個關于C文件,它假定了一些以前的熟人與該語言。然而,它并不必須是一個廣泛的熟人。
職能任務
使用類
class_getName
class_getMethodImplementation_stret
class_setSuperclass
已過時的OS X V10.5
類的實例化
class_createInstance
用工作實例
object_copy
獲取類定義
objc_getClassList
使用實例變量工作
ivar_getName
發送消息
當它遇到一個方法調用時,編譯器可能會生成調用任意幾個函數來執行實際的消息調度,根據不同的接收器,返回值和參數。您可以使用這些功能來動態地從你自己的純C代碼中調用方法,或者使用不NSObject的公司允許說法的形式進行......
方法。這些函數在聲明/usr/include/objc/objc-runtime.h
。
objc_msgSend
發送一個消息,一個簡單的返回值的類的實例。
objc_msgSend_stret
發送與數據結構返回值的消息,一個類的實例。
objc_msgSendSuper
發送一個消息,一個簡單的返回值的類的實例的超類。
objc_msgSendSuper_stret
發送消息與數據結構返回值的類的實例的超類。
與工作方法
method_invoke
method_exchangeImplementations
與選擇器的工作
sel_getName
與合作協議
objc_getProtocol
protocol_copyMethodDescriptionList
與工作性質
property_getName
使用Objective-C語言特征
objc_enumerationMutation
objc_setEnumerationMutationHandler
功能
class_addIvar
增加了一個新的實例變量的類。
布爾class_addIvar(CLS級,為const char *的名字,為size_t大小,uint8_t有調整,為const char *類型)
返回值
是的
,如果實例變量添加成功,否則NO
(例如,類已經包含了該名稱的實例變量)。
討論
此功能可能僅在被稱為objc_allocateClassPair
之前objc_registerClassPair
。添加一個實例變量到一個已經存在的類不支持。
這個類不能是元類。添加一個實例變量來元類不支持。
以字節為單位的實例變量的最小對齊是1 <<對齊
。一個實例變量的最小對齊取決于伊娃的類型和機器架構。對于任何指針類型的變量,通過LOG2(sizeof運算(POINTER_TYPE))
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
class_addMethod
增加了一個新的方法,一類具有給定名稱和實施。
布爾class_addMethod(CLS級,SEL名,IMP IMP,為const char *類型)
參數
CLS
類要添加的方法。
名
一個選擇器,用于指定方法的名稱被添加。
IMP
的函數,而新方法的實現。該函數必須至少有兩個arguments- 自我
和_cmd
。
類型
描述的參數的類型的方法,字符數組。對于可能的值,看Objective-C的運行時編程指南 > “輸入編碼”。因為該函數必須至少有兩個arguments- 自我
和_cmd
,第二和第三個字符必須是“ @
“ (第一個字符是返回類型)。
返回值
是的
,如果該方法成功地添加,否則NO
(例如,類已經包含了一個方法實現了這個名字)。
討論
class_addMethod
將添加一個超類的實現的覆蓋,但不會取代此類現有的實現。要更改現有的實現,使用method_setImplementation
。
一個Objective-C的方法是一個簡單的C函數需要至少兩個arguments- 自我
和_cmd
。例如,考慮下面的函數:
無效myMethodIMP(ID自我,SEL _cmd)
{
//實現....
}
您可以動態地將其添加到類中的方法(稱為resolveThisMethodDynamically
)所示:
class_addMethod([個體經營類],@selector(resolveThisMethodDynamically),(IMP)myMethodIMP,“V @”);
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
class_addProperty
添加一個屬性類。
布爾class_addProperty(CLS級,為const char *名,常量objc_property_attribute_t *屬性,無符號整型attributeCount)
參數
CLS
這個類進行修改。
名
該屬性的名稱。
屬性
物業數組屬性。
attributeCount
中的屬性數目的屬性。
返回值
是的
,如果該屬性已成功添加; 否則NO
(例如,這個函數返回NO
,如果該類已經擁有該屬性)。
空房
可在OS X v10.7及更高版本。
宣稱
objc / runtime.h
class_addProtocol
增加了一個協議,一個類。
布爾class_addProtocol(CLS級,協議*協議)
參數
CLS
這個類進行修改。
outCount
該協議添加到CLS。
返回值
YES
如果協議被成功添加,否則編號
(例如,類已符合該協議)。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
class_conformsToProtocol
返回一個布爾值,表示一個類是否符合給定的協議。
布爾class_conformsToProtocol(CLS級,協議*協議)
參數
CLS
類要檢查。
協議
的協議。
返回值
是的
,如果CLS符合協議,否則無
。
討論
你通常應該使用NSObject的
的conformsToProtocol:
代替此功能的方法。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
class_copyIvarList
描述一個類中聲明的實例變量。
伊瓦爾·class_copyIvarList(CLS級,無符號整型* outCount)
參數
CLS
該類檢查。
outCount
在返回時,包含了返回的數組的長度。如果outCount是空
,是不是返回的長度。
返回值
伊瓦類型的指針,描述了類聲明的實例變量的數組。由超聲明的實例變量不包括在內。該數組包含* outCount
指針后跟一個空
終止符。您必須釋放與陣列免費的()
。
如果類沒有聲明實例變量,或者CLS
是零
,NULL,
則返回和* outCount
為0
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
class_copyMethodList
描述了一個類實現的實例方法。
方法* class_copyMethodList(CLS級,無符號整型* outCount)
參數
CLS
類要檢查。
outCount
在返回時,包含了返回的數組的長度。如果outCount是空
,是不是返回的長度。
返回值
類型的指針數組的方法
不包含說明通過超類實現的類的任何實例方法實現的實例方法。該數組包含* outCount
指針后跟一個空
終止符。您必須釋放與陣列免費的()
。
如果CLS沒有實現的實例方法,或者CLS是零
,則返回空值
和* outCount
為0
。
討論
為了得到一個類的類的方法,使用class_copyMethodList(object_getClass(CLS),及計數)
。
要獲取方法的實現,可以通過父類來實現,使用class_getInstanceMethod
或class_getClassMethod
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
class_copyPropertyList
描述一個類中聲明的屬性。
objc_property_t * class_copyPropertyList(CLS級,無符號整型* outCount)
參數
CLS
類要檢查。
outCount
在返回時,包含了返回的數組的長度。如果outCount是空
,是不是返回的長度。
返回值
類型的指針數組objc_property_t
描述的類聲明的屬性。不包括超類中聲明的所有屬性。該數組包含* outCount
指針后跟一個空
終止符。您必須釋放與陣列免費的()
。
如果CLS聲明沒有屬性,或者CLS是零
,則返回空值
和* outCount
為0
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
class_copyProtocolList
描述了通過一個類的協議。
協議** class_copyProtocolList(CLS級,無符號整型* outCount)
參數
CLS
類要檢查。
outCount
在返回時,包含了返回的數組的長度。如果outCount是空
,是不是返回的長度。
返回值
類型的指針數組協議*
說明通過類的協議。采用超或其他協議的任何協議不包括在內。該數組包含* outCount
指針后跟一個空
終止符。您必須釋放與陣列免費的()
。
如果CLS采用無協議或CLS是零
,則返回空值
和* outCount
為0
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
class_createInstance
創建一個類的實例,這個類在默認的malloc內存區分配內存。
ID class_createInstance(CLS級,為size_t extraBytes)
參數
CLS
要分配的一個實例的類。
extraBytes
一個整數,指示的額外字節數來分配。中的附加字節可以被用于存儲以外的類定義中所定義的附加的實例變量。
返回值
這個類的一個實例CLS。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / runtime.h
class_getClassMethod
返回一個指針,指向的數據結構描述為一個給定的類指定類方法。
方法class_getClassMethod(類類的一個,SEL aSelector)
參數
ACLASS
一個指針,指向一個類定義。通過包含您要檢索的方法的類。
aSelector
類型的指針SEL
。傳給你要檢索的方法的選擇。
返回值
一個指針,指向的方法
對應于由指定的選擇器的實現數據結構aSelector由指定的類類的一個或NULL,
如果指定的類或者它的超類不包含的類的方法用指定的選擇。
討論
請注意,此功能搜索超供實現,而class_copyMethodList
沒有。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / runtime.h
class_getClassVariable
返回伊瓦爾
對于給定的類的指定類變量。
伊瓦爾class_getClassVariable(CLS級,為const char *名)
參數
CLS
類定義的類變量,你希望獲得。
名
來獲得類的變量定義的名稱。
返回值
一個指針,指向一個伊瓦爾
包含有關所指定的類變量信息的數據結構的名稱
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
class_getImageName
返回動態庫中的類源自的名稱。
為const char * class_getImageName(CLS級)
參數
CLS
您詢問的類。
返回值
C字符串表示包含該庫的名稱CLS級。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
class_getInstanceMethod
返回指定實例方法對于給定的類。
方法class_getInstanceMethod(類類的一個,SEL aSelector)
參數
ACLASS
類要檢查。
aSelector
要檢索的方法的選擇。
返回值
對應于由指定的選擇器的實現方法aSelector由指定的類類的一個或NULL,
如果指定的類或者它的超類不包含的實例方法使用指定的選擇。
討論
請注意,此功能搜索超供實現,而class_copyMethodList
沒有。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / runtime.h
class_getInstanceSize
返回一個類的實例的大小。
為size_t class_getInstanceSize(CLS級)
參數
CLS
一個Class對象。
返回值
在類的實例的字節大小CLS,或者0
,如果CLS是零
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
class_getInstanceVariable
返回伊瓦爾
對于給定的類的指定實例變量。
伊瓦爾class_getInstanceVariable(CLS級,為const char *名)
參數
CLS
這個類的實例變量,你希望獲得。
名
獲取實例變量定義的名稱。
返回值
一個指針,指向一個伊瓦爾
包含有關被指定的實例變量信息的數據結構的名稱
。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / runtime.h
class_getIvarLayout
返回的描述伊瓦爾
布局對于一個給定的類。
為const char * class_getIvarLayout(CLS級)
參數
CLS
該類檢查。
返回值
的描述伊瓦
布局CLS。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
class_getMethodImplementation
返回的函數指針,如果一個特定的消息被發送到一個類的實例,將被調用。
進出口class_getMethodImplementation(CLS級,SEL名)
參數
CLS
類要檢查。
名
一個選擇。
返回值
函數指針,如果那被稱為[對象名稱]
被稱為與類的實例,或者為NULL
,如果CLS是零
。
討論
class_getMethodImplementation
可能比快method_getImplementation(class_getInstanceMethod(CLS,名稱))
。
返回的函數指針可能是內部的運行,而不是一個實際的方法實現的功能。例如,如果該類的實例不來選擇響應,返回的函數指針將是運行時的消息轉發機制的一部分。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
class_getMethodImplementation_stret
返回的函數指針,如果一個特定的消息被發送到一個類的實例,將被調用。
進出口class_getMethodImplementation_stret(CLS級,SEL名)
參數
CLS
類要檢查。
名
一個選擇。
返回值
函數指針,如果那被稱為[對象名稱]
被稱為與類的實例,或者為NULL
,如果CLS是零
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
class_getName
返回類的名稱。
為const char * class_getName(CLS級)
參數
CLS
一個Class對象。
返回值
類的名稱,或者空字符串CLS是零
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
class_getProperty
返回與給定類的給定名稱的屬性。
objc_property_t class_getProperty(CLS級,為const char 名)
返回值
類型的指針objc_property_t
描述性,或空
,如果類沒有使用該名稱,或者聲明一個屬性為NULL
,如果CLS*是零
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
class_getSuperclass
返回一個類的父類。
類class_getSuperclass(CLS級)
參數
CLS
一個Class對象。
返回值
該類的超類,或無
,如果CLS是根類,或無
,如果CLS是零
。
討論
你通常應該使用NSObject的
的超類
來代替這一功能的方法。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
class_getVersion
返回一個類定義的版本號。
INT class_getVersion(類theClass描述)
參數
theClass描述
一個指針,指向一個類
的數據結構。通過對您想要獲取版本的類的定義。
返回值
的整數,指示在類定義的版本號。
討論
您可以使用類定義的版本號為您的類代表其他類接口的版本。這是用于對象序列特別有用(即,在一個扁平的形式的對象的歸檔),在那里它的變化認識到在不同的類定義版本的實例變量的布局是非常重要的。
從基礎架構派生類NSObject的
類可以獲取使用的類定義版本號的getVersion
類方法,它是利用實施class_getVersion
功能。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / runtime.h
class_getWeakIvarLayout
返回弱布局的描述伊瓦爾
為了一個給定的類。
為const char * class_getWeakIvarLayout(CLS級)
參數
CLS
該類檢查。
返回值
弱布局的描述伊瓦
S代表CLS。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
class_isMetaClass
返回一個布爾值,表示一個類對象是否是一個元類。
布爾class_isMetaClass(CLS級)
參數
CLS
一個Class對象。
返回值
是的
,如果CLS是一個元類,NO
,如果CLS是一種非Meta類,NO
,如果CLS是零
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
class_replaceMethod
替換為一個給定的類中的方法的實現。
進出口class_replaceMethod(CLS級,SEL名,IMP IMP,為const char *類型)
參數
CLS
類要修改。
名
選擇器是標識要替換它的實現方法。
IMP
新的實現對于所確定的方法名稱所標識的類CLS。
類型
描述的參數的類型的方法,字符數組。對于可能的值,看Objective-C的運行時編程指南 > “輸入編碼”。因為該函數必須至少有兩個arguments- 自我
和_cmd
,第二和第三個字符必須是“ @
“ (第一個字符是返回類型)。
返回值
以前的實現所確定的方法的名字所標識的類CLS。
討論
這個函數的作用有兩種不同的方式:
如果確定該方法的名稱不存在,它被添加仿佛class_addMethod
被稱為。通過所指定的類型的編碼類型被用作給定。
如果確定了該方法的名字存在,其IMP被替換仿佛method_setImplementation
被調用。通過指定類型的編碼類型被忽略。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
class_replaceProperty
替換類的屬性。
無效class_replaceProperty(CLS級,為const char *名,常量objc_property_attribute_t *屬性,無符號整型attributeCount)
參數
CLS
這個類進行修改。
名
該屬性的名稱。
屬性
物業數組屬性。
attributeCount
中的屬性數目的屬性。
空房
可在OS X v10.7及更高版本。
另請參閱
class_addProperty
宣稱
objc / runtime.h
class_respondsToSelector
返回一個布爾值,表示一個類的實例是否在一個特定的選擇做出回應。
布爾class_respondsToSelector(CLS級,SEL SEL)
參數
CLS
類要檢查。
SEL
一個選擇。
返回值
是的
,如果該類的實例響應選擇,否則無
。
討論
你通常應該使用NSObject的
的respondsToSelector:
或instancesRespondToSelector:
方法代替此功能。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
class_setIvarLayout
設置伊瓦爾
對于一個給定的類布局。
無效class_setIvarLayout(CLS級,為const char *布局)
參數
CLS
這個類進行修改。
布局
的布局伊瓦
S代表CLS。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
class_setVersion
設置一個類定義的版本號。
無效class_setVersion(類theClass描述,詮釋的版本)
參數
theClass描述
一個指針,指向一個類
的數據結構。通過要為其設置版本的類的定義。
版本
一個整數。通過類定義的新的版本號。
討論
您可以使用類定義的版本號為您的類代表其他類接口的版本。這是用于對象序列特別有用(即,在一個扁平的形式的對象的歸檔),在那里它的變化認識到在不同的類定義版本的實例變量的布局是非常重要的。
從基礎架構派生類NSObject的
類可以使用設置類定義的版本號setVersion中:
類方法,它是利用實施class_setVersion
功能。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / runtime.h
class_setWeakIvarLayout
設置為弱的布局伊瓦爾
為了一個給定的類。
無效class_setWeakIvarLayout(CLS級,為const char *布局)
參數
CLS
這個類進行修改。
布局
弱布局伊娃
S代表CLS。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
imp_getBlock
返回與相關的塊IMP
使用創建的imp_implementationWithBlock
。
ID imp_getBlock(IMP anImp)
參數
anImp
該公司
調用該塊。
返回值
調用塊anImp。
空房
可在OS X v10.7及更高版本。
另請參閱
imp_implementationWithBlock
宣稱
objc / runtime.h
imp_implementationWithBlock
創建一個指向函數的指針調用時調用該方法的指定塊。
進出口imp_implementationWithBlock(ID塊)
參數
塊
實現此方法的程序段。簽名塊應method_return_type ^(ID自我,自我,method_args ...)
。該方法的選擇是不提供給方框。塊被復制與Block_copy()
。
返回值
該公司
調用塊。你必須處理返回的進出口
使用的功能。
空房
可在OS X v10.7及更高版本。
另請參閱
imp_getBlock
宣稱
objc / runtime.h
imp_removeBlock
解除關聯從一個塊IMP
使用創建的imp_implementationWithBlock
,并釋放所創建的塊的副本。
布爾imp_removeBlock(IMP anImp)
參數
anImp
一個IMP
使用創建的imp_implementationWithBlock
功能。
返回值
是的
,如果該塊被成功釋放; 否則,編號
(例如,該函數返回NO
如果塊沒有被用來創建anImp以前)。
空房
可在OS X v10.7及更高版本。
另請參閱
imp_implementationWithBlock
宣稱
objc / runtime.h
ivar_getName
返回一個實例變量的名稱。
為const char * ivar_getName(伊娃伊娃)
返回值
C字符串包含實例變量的名字。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
ivar_getOffset
實例變量返回的偏移量。
ptrdiff_t的ivar_getOffset(伊娃伊娃)
討論
對于類型的實例變量標識
或其他對象的類型,調用object_getIvar
和object_setIvar
使用該偏移量來直接訪問該實例變量的數據來代替。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
ivar_getTypeEncoding
返回一個實例變量的類型的字符串。
為const char * ivar_getTypeEncoding(伊娃伊娃)
返回值
C字符串包含實例變量的類型編碼。
討論
對于可能的值,看Objective-C的運行時編程指南 > “輸入編碼”。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
method_copyArgumentType
返回描述方法的一個參數類型的字符串。
char *的method_copyArgumentType(方法方法,無符號整型指數)
參數
方法
該方法檢查。
指數
該參數的索引進行檢查。
返回值
C字符串描述參數的索引類型索引,或者為NULL
,如果方法沒有參數指標指數。您必須釋放字符串免費的()
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
method_copyReturnType
返回描述方法的返回類型的字符串。
char *的method_copyReturnType(法法)
參數
方法
該方法檢查。
返回值
C字符串描述返回類型。您必須釋放字符串免費的()
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
method_exchangeImplementations
交流兩種方法的實現。
無效method_exchangeImplementations(方法M1,M2的方法)
討論
這是下面的一個原子的版本:
進出口IMP1 = method_getImplementation(M1);
進出口IMP2 = method_getImplementation(M2);
method_setImplementation(M1,IMP2);
method_setImplementation(M2,IMP1);
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
method_getArgumentType
返回參照描述方法的一個參數類型的字符串。
無效method_getArgumentType(方法方法,unsigned int類型的索引,char 的DST,為size_t dst_len)
討論
參數類型的字符串復制到DST,DST充滿仿佛函數strncpy(DST,parameter_type,dst_len)
被調用。如果該方法包含與該指數沒有參數,DST*充滿仿佛函數strncpy(DST,“”,dst_len)
被調用。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
method_getDescription
返回的方法描述結構的特定方法。
結構objc_method_description * method_getDescription(方法M)
參數
米
該方法要打聽。
返回值
一個objc_method_description
結構,描述根據指定的方法米。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
method_getImplementation
返回一個方法的實現。
進出口method_getImplementation(法法)
參數
方法
該方法檢查。
返回值
類型的函數指針進出口
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
method_getName
返回一個方法的名稱。
SEL method_getName(法法)
參數
方法
該方法檢查。
返回值
SEL類型的指針。
討論
要獲取方法的名稱為C字符串,調用sel_getName(method_getName(法))
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
method_getNumberOfArguments
返回由法接受的參數的個數。
無符號method_getNumberOfArguments(法法)
參數
方法
一個指向方法
的數據結構。通過有問題的方法。
返回值
包含由給定的方法接受的參數數量的整數。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / runtime.h
method_getReturnType
通過引用返回一個描述方法的返回類型的字符串。
無效method_getReturnType(方法方法,char 的DST,為size_t dst_len)
討論
該方法的返回類型為字符串復制到夏令時,夏令時*是充滿仿佛函數strncpy(DST,parameter_type,dst_len)
被調用。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
method_getTypeEncoding
返回描述方法的參數和返回類型的字符串。
為const char * method_getTypeEncoding(法法)
參數
方法
該方法檢查。
返回值
C字符串。該字符串可以是NULL
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
method_invoke
調用指定的方法的實現。
ID method_invoke(ID接收器,法米,...)
參數
接收器
一個指針,指向要調用的方法的類的實例。這個值不能為零
。
米
該方法要調用它的實現。
......
可變參數列表包含參數的方法。
返回值
該方法的返回值。
討論
使用此功能來調用一個方法的實現比調用更快method_getImplementation
和method_getName
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / message.h
method_invoke_stret
調用指定的方法,返回一個數據結構的實現。
無效method_invoke_stret(ID接收器,法米,...)
參數
接收器
一個指針,指向要調用的方法的類的實例。這個值不能為零
。
米
該方法要調用它的實現。
......
可變參數列表包含參數的方法。
討論
使用此功能來調用一個方法的實現比調用更快method_getImplementation
和method_getName
。
空房
可在OS X V10.5及更高版本。
宣稱
objc / message.h
method_setImplementation
設置一個方法的實現。
進出口method_setImplementation(方法方法,IMP IMP)
返回值
以前的實施方法。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
objc_allocateClassPair
創建一個新的類和元類。
objc_allocateClassPair(父類,為const char *名,為size_t extraBytes)
參數
超
類為新類的超類使用,或無
以創建一個新的根類。
名
將字符串作為新的類的名稱使用。該字符串將被復制。
extraBytes
的字節數來分配的索引實例變量在類與元類對象的結束。這通常應為0
。
返回值
新的類,或者無
如果不能創建的類(例如,所需的名稱已被使用)。
討論
你可以通過調用得到一個指向新的元類object_getClass(的NewClass)
。
要創建一個新的類,通 ??過調用啟動objc_allocateClassPair
。然后設置類的屬性與像功能class_addMethod
和class_addIvar
。當您完成建設類,調用objc_registerClassPair
。新類是現在可以使用了。
實例方法和實例變量應該被添加到類本身。類的方法應該被添加到元類。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
objc_allocateProtocol
創建一個新的協議實例。
協議* objc_allocateProtocol(為const char *名)
參數
名
你要創建的協議的名稱。
返回值
一個新的協議實例或零
,如果使用相同的名稱作為協議的名稱已經存在。
討論
您必須注冊到返回的協議實例objc_registerProtocol
功能,然后才能使用它。
沒有與此功能相關聯的dispose方法。
空房
可在OS X v10.7及更高版本。
宣稱
objc / runtime.h
objc_constructInstance
在指定位置創建一個類的實例。
ID objc_constructInstance(CLS級,無效*字節)
參數
CLS
要分配的一個實例的類。
字節
在該分配的實例的位置CLS級。字節神秘島點至少class_getInstanceSize(CLS)
以及對齊,零填充的內存字節。
返回值
這個類的一個實例CLS的字節數,如果成功; 否則為零
(例如,如果CLS或字節本身是零
)。
空房
可在OS X v10.6中及更高版本。
另請參閱
class_createInstance
宣稱
objc / runtime.h
objc_copyClassList
創建并返回指向所有注冊類定義的列表。
類* objc_copyClassList(無符號整數* outCount)
參數
outCount
一個整數的指針,用來存儲在列表中該函數返回類的數量。此參數可以是零
。
返回值
á 無
終止的類數組。您必須釋放與陣列免費的()
。
空房
可在OS X v10.7及更高版本。
另請參閱
objc_getClassList
宣稱
objc / runtime.h
objc_copyClassNamesForImage
返回在指定庫或框架的所有類的名稱。
為const char ** objc_copyClassNamesForImage(為const char 的圖像,無符號整型 outCount)
參數
圖片
庫或框架,你打聽。
outCount
返回的數組中的類名的數量。
返回值
C字符串代表了所有指定的庫或框架中的類名數組。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
objc_copyImageNames
返回所有已加載的Objective-C框架和動態庫的名字。
為const char ** objc_copyImageNames(無符號整數* outCount)
參數
outCount
返回的數組中人名的數目。
返回值
C字符串表示所有已加載的Objective-C框架和動態庫的名稱的數組。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
objc_copyProtocolList
返回所有已知的運行協議的數組。
協議** objc_copyProtocolList(無符號整數* outCount)
參數
outCount
返回時,包含返回的數組中的協議數量。
返回值
交流陣列中所有已知的運行時的協議。該數組包含* outCount
指針后跟一個空
終止符。您必須釋放列表免費的()
。
討論
這個函數獲取運行時鎖定。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
objc_destructInstance
銷毀一個類的實例沒有釋放內存,并刪除任何相關參考資料。
無效objc_destructInstance(ID OBJ)
討論
此方法不執行任何操作,如果OBJ是零
。
重要提示: 在垃圾回收器不會調用這個函數。因此,如果你編輯這個功能,你應該也可以編輯完成。也就是說,核心基金及其他客戶做的叫垃圾收集下此功能。
空房
可在OS X v10.6中及更高版本。
宣稱
objc / runtime.h
objc_disposeClassPair
破壞類及其相關的元類。
無效objc_disposeClassPair(CLS級)
參數
CLS
該類被破壞。這個類必須已經使用分配objc_allocateClassPair
。
討論
不要調用這個函數,如果實例CLS存在的類或任何子類。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
objc_duplicateClass
用基金會的鍵 - 值觀察。
objc_duplicateClass
特別注意事項
不要自己調用這個函數。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
objc_enumerationMutation
通過在一個foreach循環中檢測到突變的編譯器插入。
無效objc_enumerationMutation(ID OBJ)
參數
OBJ
對象被突變。
討論
編譯器插入此功能檢測到的對象是一個foreach迭代過程中發生突變的時候。當變異發生在函數被調用,如果它被設置(通過枚舉突變處理程序制定objc_setEnumerationMutationHandler
功能)。如果處理器沒有建立起來,出現致命錯誤。
空房
可在OS X V10.5及更高版本。
另請參閱
objc_setEnumerationMutationHandler
宣稱
objc / runtime.h