參數(shù)
自
一個指針,指向類的要接收消息的實例。
OP
在處理該信息的方法的選擇锄列。
......
可變參數(shù)列表包含參數(shù)的方法。
返回值
該方法的返回值觅赊。
討論
當(dāng)它遇到一個方法調(diào)用時右蕊,編譯器會生成調(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ā)送一個消息,一個簡單的返回值的類的實例的超類紫岩。
ID objc_msgSendSuper(結(jié)構(gòu)objc_super *超规惰,SEL運算,...)
參數(shù)
超
一個指針泉蝌,指向一個objc_super數(shù)據(jù)結(jié)構(gòu)歇万。傳遞值確定郵件發(fā)送給包括要接收消息和超在其開始搜索的方法實現(xiàn)的類的實例的上下文。
OP
類型的指針SEL勋陪。通過將處理該信息的方法的選擇贪磺。
......
可變參數(shù)列表包含參數(shù)的方法。
返回值
確定了該方法的返回值的運算诅愚。
討論
當(dāng)它遇到一個方法調(diào)用時寒锚,編譯器會生成調(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)返回值的類的實例的超類。
無效objc_msgSendSuper_stret(結(jié)構(gòu)objc_super *超校坑,SEL運算轧飞,...)
參數(shù)
超
一個指針衅鹿,指向一個objc_super數(shù)據(jù)結(jié)構(gòu)撒踪。傳遞值確定郵件發(fā)送給包括要接收消息和超在其開始搜索的方法實現(xiàn)的類的實例的上下文过咬。
OP
類型的指針SEL。通過該方法的選擇制妄。
......
可變參數(shù)列表包含參數(shù)的方法掸绞。
討論
當(dāng)它遇到一個方法調(diào)用時,編譯器會生成調(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ā)送消息浮點返回值的類的實例磷斧。
雙objc_msgSend_fpret(ID自我振愿,SEL運算,...)
參數(shù)
自
一個指針弛饭,指向類的要接收消息的實例冕末。
OP
在處理該信息的方法的選擇。
......
可變參數(shù)列表包含參數(shù)的方法侣颂。
討論
在i386平臺档桃,ABI的功能為返回一個浮點數(shù)值與對函數(shù)返回一個整數(shù)類型不兼容。在i386平臺憔晒,因此藻肄,您必須使用objc_msgSend_fpret的功能,對于函數(shù)返回非整數(shù)類型拒担。對于浮動或長雙返回類型嘹屯,施放功能,適當(dāng)?shù)暮瘮?shù)指針類型第一澎蛛。
這個功能沒有被使用在PPC或PPC64平臺抚垄。
空房
可在OS X 10.4及更高版本。
宣稱
objc / message.h
objc_msgSend_stret
發(fā)送一個數(shù)據(jù)結(jié)構(gòu)谋逻,返回值的消息呆馁,一個類的實例。
無效objc_msgSend_stret(void *的stretAddr毁兆,ID theReceiver浙滤,SEL theSelector,...)
參數(shù)
stretAddr
在輸入時气堕,指針指向的內(nèi)存足夠大纺腊,以包含該方法的返回值的塊畔咧。在輸出時,包含該方法的返回值揖膜。
theReceiver
一個指針誓沸,指向類的實例,它是接收消息壹粟。
theSelector
類型的指針SEL拜隧。通過處理該信息的方法的選擇。
......
可變參數(shù)列表包含參數(shù)的方法趁仙。
討論
當(dāng)它遇到一個方法調(diào)用時洪添,編譯器會生成調(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
注冊一個與Objective-C運行新創(chuàng)建的協(xié)議逛漫。
無效objc_registerProtocol(協(xié)議*原)
參數(shù)
原
該協(xié)議要與Objective-C的運行時進(jìn)行登記黑低。
討論
當(dāng)您創(chuàng)建使用一個新的協(xié)議objc_allocateProtocol,然后酌毡,通過調(diào)用這個函數(shù)的Objective-C的運行時注冊它克握。經(jīng)過協(xié)議成功注冊,這是不可改變的枷踏,并準(zhǔn)備使用菩暗。
空房
可在OS X v10.7及更高版本。
另請參閱
objc_allocateProtocol
宣稱
objc / runtime.h
objc_removeAssociatedObjects
刪除給定對象的所有關(guān)聯(lián)旭蠕。
無效objc_removeAssociatedObjects(ID對象)
參數(shù)
對象
它維護(hù)相關(guān)聯(lián)的對象的對象停团。
討論
此功能的主要目的是可以很容易將對象返回到“原始狀態(tài)”,你不應(yīng)該使用這個函數(shù)從對象一般去除關(guān)聯(lián)掏熬,因為它也消除了其他客戶可能已添加到該對象關(guān)聯(lián)佑稠。通常情況下,你應(yīng)該使用objc_setAssociatedObject與零值旗芬,以清除關(guān)聯(lián)舌胶。
空房
可在OS X v10.6中及更高版本。
另請參閱
objc_setAssociatedObject
objc_getAssociatedObject
宣稱
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)對象的行為昙衅。”
空房
可在OS X v10.6中及更高版本定鸟。
另請參閱
objc_setAssociatedObject
objc_removeAssociatedObjects
宣稱
objc / runtime.h
objc_setEnumerationMutationHandler
設(shè)置電流突變處理而涉。
無效objc_setEnumerationMutationHandler(無效(*處理器)(ID))
參數(shù)
處理程序
函數(shù)指針到新的變異處理程序。
空房
可在OS X V10.5及更高版本联予。
宣稱
objc / runtime.h
objc_setFutureClass
使用CoreFoundation的免費橋接啼县。
無效objc_setFutureClass(CLS級,為const char *名)
特別注意事項
不要自己調(diào)用這個函數(shù)沸久。
空房
可在OS X V10.5及更高版本季眷。
宣稱
objc / runtime.h
objc_storeWeak
存儲在一個新值__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大邢烈獭)
參數(shù)
OBJ
一個Objective-C的對象。
大小
對象的大小物鏡苏遥。
返回值
副本OBJ饼拍。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / runtime.h
object_dispose
釋放由給定對象占用的內(nèi)存暖眼。
ID object_dispose(ID OBJ)
參數(shù)
OBJ
一個Objective-C的對象惕耕。
返回值
無。
空房
可在OS X 10.0版和更高版本诫肠。
宣稱
objc / runtime.h
object_getClass
返回類的對象司澎。
類object_getClass(ID對象)
參數(shù)
對象
對象要檢查欺缘。
返回值
其中的類對象對象是一個實例,或無如果對象是零挤安。
空房
可在OS X V10.5及更高版本谚殊。
宣稱
objc / runtime.h
object_getClassName
返回給定對象的類名。
為const char * object_getClassName(ID OBJ)
參數(shù)
OBJ
一個Objective-C的對象蛤铜。
返回值
類嫩絮,其中的名稱物鏡是一個實例。
空房
可在OS X 10.0版和更高版本围肥。
宣稱
objc / runtime.h
object_getIndexedIvars
返回一個指向分配一個實例給定對象的任何額外的字節(jié)剿干。
OBJC_EXPORT無效* object_getIndexedIvars(ID OBJ)
參數(shù)
OBJ
一個Objective-C的對象。
返回值
一個指向分配任何額外的字節(jié)OBJ穆刻。如果OBJ沒有被分配任何額外的字節(jié)置尔,然后提領(lǐng)返回的指針是不確定的。
討論
這個函數(shù)返回一個指向分配該實例的任何額外的字節(jié)(具體由class_createInstance與extraBytes> 0)氢伟。這個存儲器如下物件的普通實例變量榜轿,但可能并不相鄰于最后的ivar。
返回指針是保證指針尺寸對齊朵锣,即使下面的對象的最后的ivar的面積小于對準(zhǔn)谬盐。比指針的大小對齊更大從未得到保證,即使下面的對象的最后的ivar的面積比更一致诚些。
在垃圾收集環(huán)境中飞傀,內(nèi)存掃描保守。
空房
可在OS X 10.0版和更高版本泣刹。
宣稱
objc / objc.h
object_getInstanceVariable
獲得一個類的實例的實例變量的值助析。
伊瓦爾object_getInstanceVariable(ID OBJ,為const char 名椅您,空白* outValue)
參數(shù)
OBJ
一個指針外冀,指向一個類的實例。通過含有該實例變量掀泳,其值要獲取的對象雪隧。
名
C字符串。通過實例變量的值员舵,你希望得到的名字脑沿。
outValue
在返回時,包含一個指向該實例變量的值马僻。
返回值
的指針伊娃的數(shù)據(jù)結(jié)構(gòu)庄拇,它定義了指定的實例變量的類型和名稱的名稱。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / runtime.h
object_getIvar
讀一個實例變量中的對象的值措近。
ID object_getIvar(ID對象溶弟,伊娃伊娃)
參數(shù)
對象
包含實例變量要讀取其值的對象。
伊娃
在伊瓦描述實例變量瞭郑,你想讀的價值辜御。
返回值
由指定的實例變量的值伊娃,或者為零屈张,如果對象是零擒权。
討論
object_getIvar比快object_getInstanceVariable如果已經(jīng)知道伊娃的實例變量。
空房
可在OS X V10.5及更高版本阁谆。
宣稱
objc / runtime.h
object_setClass
設(shè)置類的對象的碳抄。
類object_setClass(ID對象,類CLS)
參數(shù)
對象
修改的對象笛厦。
SEL
一個Class對象纳鼎。
返回值
以前的值對象的類,或者無裳凸,如果對象是零。
空房
可在OS X V10.5及更高版本劝贸。
宣稱
objc / runtime.h
object_setInstanceVariable
改變一個類的實例的實例變量的值姨谷。
伊瓦爾object_setInstanceVariable(ID OBJ,為const char *的名字映九,void *的值)
參數(shù)
OBJ
一個指針梦湘,指向一個類的實例。通過包含實例變量件甥,它的值要修改的對象捌议。
名
C字符串。通過實例變量引有,它的值要修改的名稱瓣颅。
值
對實例變量的新值。
返回值
的指針伊娃的數(shù)據(jù)結(jié)構(gòu)譬正,它定義了指定的實例變量的類型和名稱的名稱宫补。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / runtime.h
object_setIvar
設(shè)置一個實例變量中的對象的值曾我。
無效object_setIvar(ID對象粉怕,伊娃伊娃,值id)
參數(shù)
對象
包含實例變量要設(shè)置其值的對象抒巢。
伊娃
在伊瓦描述實例變量要設(shè)置其值贫贝。
值
對實例變量的新值。
討論
object_setIvar比快object_setInstanceVariable如果已經(jīng)知道伊娃的實例變量蛉谜。
空房
可在OS X V10.5及更高版本稚晚。
宣稱
objc / runtime.h
property_copyAttributeList
返回屬性的屬性給定屬性的數(shù)組崇堵。
objc_property_attribute_t * property_copyAttributeList(objc_property_t財產(chǎn),無符號整型* outCount)
參數(shù)
物業(yè)
你要復(fù)制的屬性蜈彼,它的屬性筑辨。
outCount
數(shù)組中返回的屬性的數(shù)量。
返回值
物業(yè)數(shù)組屬性幸逆。您必須釋放與陣列免費的() 棍辕。
空房
可在OS X v10.7及更高版本。
宣稱
objc / runtime.h
property_copyAttributeValue
返回給定屬性名稱的屬性屬性的值还绘。
char *的property_copyAttributeValue(objc_property_t財產(chǎn)楚昭,為const char *屬性名稱)
參數(shù)
物業(yè)
該物業(yè)的價值你感興趣的內(nèi)容。
屬性名稱
C字符串表示的屬性的名稱拍顷。
返回值
該值的字符串屬性名稱的屬性抚太,如果存在的財產(chǎn) ; 否則,零昔案。您必須釋放與返回值的字符串免費() 尿贫。
空房
可在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
添加一個方法的協(xié)議。
無效protocol_addMethodDescription(協(xié)議*原衰齐,SEL名任斋,為const char *類型,布爾isRequiredMethod娇斩,布爾isInstanceMethod)
參數(shù)
原
該協(xié)議要添加一個方法仁卷。
名
要添加的方法的名稱。
類型
交流字符串犬第,表示要添加的方法的簽名锦积。
isRequiredMethod
布爾值,表示該方法是必需的方法原協(xié)議歉嗓。如果為是丰介,則該方法是必需的方法; 若否,該方法是可選的方法。
isInstanceMethod
布爾表示方法是否是一個實例方法哮幢。如果為是带膀,則該方法是一個實例方法; 若否,該方法是一類方法橙垢。
討論
要使用此功能的方法添加到協(xié)議中垛叨,協(xié)議必須是正在建設(shè)中。也就是說柜某,你必須添加任何方法來原你的Objective-C的運行時(通過注冊它之前objc_registerProtocol功能)嗽元。
空房
可在OS X v10.7及更高版本。
宣稱
objc / runtime.h
protocol_addProperty
添加一個屬性的協(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è)置為否诞挨,則屬性將不會被加入到協(xié)議。
討論
該協(xié)議要添加的屬性必須是正在建設(shè)中呢蛤,撥出而尚未登記的Objective-C的運行時(通過objc_registerProtocol功能)惶傻。
空房
可在OS X v10.7及更高版本。
宣稱
objc / runtime.h
protocol_addProtocol
增加了一個注冊協(xié)議到另一個協(xié)議其障,正在建設(shè)中银室。
無效protocol_addProtocol(協(xié)議原,協(xié)議補充)
參數(shù)
原
該協(xié)議要注冊協(xié)議加入。
此外
注冊協(xié)議要添加到原蜈敢。
討論
要添加到(協(xié)議原)必須是正在建設(shè)中辜荠,撥出而尚未登記的Objective-C的運行時。要添加(該協(xié)議除)必須已經(jīng)注冊抓狭。
空房
可在OS X v10.7及更高版本伯病。
宣稱
objc / runtime.h
protocol_conformsToProtocol
返回一個布爾值,表示一個協(xié)議是否符合其他協(xié)議否过。
布爾protocol_conformsToProtocol(協(xié)議原午笛,協(xié)議除外)
參數(shù)
原
的協(xié)議。
其他
的協(xié)議叠纹。
返回值
是的季研,如果原符合其他,否則無誉察。
討論
一個協(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
一個布爾值,表示返回的方法有否需要的方法(通過是可以指定所需的方法)卿叽。
isInstanceMethod
一個布爾值桥胞,表示返回的方法是否應(yīng)為實例方法(傳遞是指定實例方法)。
outCount
返回時考婴,包含的方法的描述結(jié)構(gòu)的返回數(shù)組中的號碼贩虾。
返回值
交流陣objc_method_description包含的名稱和類型結(jié)構(gòu)p通過指定的方式isRequiredMethod和isInstanceMethod。該數(shù)組包含* outCount指針后跟一個空終止符沥阱。您必須釋放列表免費的() 缎罢。
如果協(xié)議沒有聲明符合規(guī)范的方法,NULL考杉,則返回和* outCount為0策精。
討論
在采用這個協(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ù)及老。
返回值
交流數(shù)組類型的指針objc_property_t描述了聲明的屬性原。不包括通過該協(xié)議的其他協(xié)議中聲明的任何屬性范抓。該數(shù)組包含* outCount指針后跟一個空終止符骄恶。您必須釋放與陣列免費的() 。
如果協(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ù)。
返回值
交流陣列通過協(xié)議原忽孽。該數(shù)組包含* outCount指針后跟一個空終止符绑改。您必須釋放與陣列免費的() 。
如果協(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
一個布爾值展箱,表示是否ASEL是必需的方法楞抡。
isInstanceMethod
一個布爾值,表示是否ASEL是一個實例方法析藕。
返回值
一個objc_method_description結(jié)構(gòu),描述根據(jù)指定的方法ASEL凳厢,isRequiredMethod和isInstanceMethod用于協(xié)議p账胧。
如果該協(xié)議不包含所指定的方法,返回一個objc_method_description與價值結(jié)構(gòu){NULL先紫,NULL} 治泥。
空房
可在OS X V10.5及更高版本。
宣稱
objc / runtime.h
protocol_getName
返回一個協(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é)議沟饥。
名
一個屬性的名稱。
isRequiredProperty
一個布爾值湾戳,表示是否名字是必需的屬性贤旷。
isInstanceProperty
一個布爾值,表示是否名字是實例屬性砾脑。
返回值
該物業(yè)指定的名稱幼驶,isRequiredProperty和isInstanceProperty為原,或NULL如果沒有原始的屬性是否符合規(guī)范韧衣。
空房
可在OS X V10.5及更高版本盅藻。
宣稱
objc / runtime.h
protocol_isEqual
返回一個布爾值,表示兩個協(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的運行時系統(tǒng)的方法名。
SEL sel_getUid(為const char * str中)
參數(shù)
海峽
一個指針攒巍,指向一個C字符串嗽仪。傳給你要注冊的方法的名稱。
返回值
類型的指針SEL指定選擇器的命名方法柒莉。
討論
該方法的實現(xiàn)是相同的實施sel_registerName闻坚。
版本說明
在此之前的OS X 10.0版本,這個方法試圖找到選擇映射到給定的名稱兢孝,返回NULL窿凤,如果沒有找到選擇仅偎。這對安全性進(jìn)行了改變,因為它指出雳殊,許多這個函數(shù)的調(diào)用者沒有檢查返回值NULL橘沥。
空房
可在OS X 10.0版和更高版本。
宣稱
objc / objc.h
sel_isEqual
返回一個布爾值相种,表示兩個選擇是否相等威恼。
布爾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的運行時系統(tǒng)的方法弦牡,映射方法名選擇器,并返回選擇值漂羊。
SEL sel_registerName(為const char * str中)
參數(shù)
海峽
一個指針驾锰,指向一個C字符串。傳給你要注冊的方法的名稱走越。
返回值
類型的指針SEL指定選擇器的命名方法椭豫。
討論
您必須注冊一個方法名與Objective-C的運行時系統(tǒng),以獲得該方法的選擇之前旨指,你可以添加方法的類的定義赏酥。如果方法名稱已被注冊,該函數(shù)只返回選擇谆构。
空房
可在OS X 10.0版和更高版本裸扶。
宣稱
objc / runtime.h
數(shù)據(jù)類型
類定義的數(shù)據(jù)結(jié)構(gòu)
類
不透明類型,表示一個Objective-C類搬素。
typedef結(jié)構(gòu)objc_class *級;
空房
可在OS X v10.6中及更高版本呵晨。
宣稱
objc / objc.h
方法
不透明類型,表示一個類定義的方法熬尺。
typedef結(jié)構(gòu)objc_method *方法;
空房
可在OS X v10.6中及更高版本何荚。
宣稱
objc / runtime.h
伊瓦爾
不透明類型,代表了一個實例變量猪杭。
typedef結(jié)構(gòu)objc_ivar *伊瓦爾;
空房
可在OS X v10.6中及更高版本。
宣稱
objc / runtime.h
分類
不透明類型妥衣,代表一個類別皂吮。
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)出口
一個指針,指向的方法實施的開始艺挪。
ID(* IMP)(身份證不翩,SEL,...)
討論
這個數(shù)據(jù)類型為指針麻裳,以實現(xiàn)該方法的功能的啟動口蝠。該功能使用標(biāo)準(zhǔn)C調(diào)用約定,實現(xiàn)當(dāng)前的CPU架構(gòu)津坑。第一個參數(shù)是指向自我(也就是這個類妙蔗,或者對于一個類的方法,一個指向元類的特定實例的內(nèi)存)疆瑰。第二個參數(shù)是方法選擇眉反。該方法的參數(shù)如下。
SEL
定義一個不透明的類型表示的方法選擇穆役。
typedef結(jié)構(gòu)objc_selector * SEL;
討論
方法選擇器被用來表示一個方法在運行時的名稱寸五。一種方法是選擇已注冊(或“映射”)與Objective-C運行C字符串。由編譯器生成的選擇器會自動運行時耿币,當(dāng)類被加載映射梳杏。
您可以在運行時添加新的選擇和檢索利用現(xiàn)有的功能選擇sel_registerName。
當(dāng)使用選擇器掰读,您必須使用從返回的值sel_registerName或Objective-C的編譯器指令@selector()秘狞。你不能簡單地投了C字符串到SEL。
空房
可在OS X v10.6中及更高版本蹈集。
宣稱
objc / objc.h
objc_method_description
定義一個Objective-C的方法烁试。
結(jié)構(gòu)objc_method_description {
SEL名;
char *的類型;
};
場
名
該方法在運行時的名稱。
類型
該類型的方法參數(shù)拢肆。
空房
可在OS X v10.6中及更高版本减响。
宣稱
objc / runtime.h
objc_method_list
包含方法定義的數(shù)組。
結(jié)構(gòu)objc_method_list
{
結(jié)構(gòu)objc_method_list *過時;
INT method_count;
結(jié)構(gòu)objc_method method_list [1];
}
場
過時了
保留供將來使用郭怪。
method_count
一個整數(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];
};
場
面膜
一個整數(shù),指定分配緩存桶(減一)的總數(shù)栽渴。在方法查找尖坤,在Objective-C的運行時使用此字段來確定其開始的線性搜索索引水桶陣。一個指針闲擦,指向一個方法的選擇是使用邏輯與操作(屏蔽慢味,這一領(lǐng)域的指數(shù)=(面具和選擇器)) 。這可作為一個簡單的散列算法墅冷。
占用
一個整數(shù)纯路,指定所占用的緩存桶的總數(shù)。
桶
指針數(shù)組方法的數(shù)據(jù)結(jié)構(gòu)俺榆。該陣列可包含不超過面膜+ 1項感昼。注意,指針可以是NULL罐脊,表示該高速緩沖桶是未占用的定嗓,并且占據(jù)桶可能不連續(xù)。該陣列可隨著時間的推移萍桌。
討論
要限制需要執(zhí)行方法列出線性搜索經(jīng)常訪問的方法宵溅,操作的定義,可以大大減緩方法查找上炎,在Objective-C的運行時函數(shù)指針存儲在類中最近被調(diào)用方法的定義一個objc_cache數(shù)據(jù)結(jié)構(gòu)恃逻。
objc_protocol_list
代表的正式協(xié)議的列表。
結(jié)構(gòu)objc_protocol_list
{
結(jié)構(gòu)objc_protocol_list 旁邊;
詮釋計數(shù);
協(xié)議列表[1];
};
場
下一個
一個指向另一個objc_protocol_list數(shù)據(jù)結(jié)構(gòu)藕施。
數(shù)
在此列表中的協(xié)議的數(shù)目寇损。
列表
指針數(shù)組類代表協(xié)議的數(shù)據(jù)結(jié)構(gòu)。
討論
正式協(xié)議是一個類定義裳食,聲明了一組方法矛市,其中的類必須實現(xiàn)。這樣的類定義中沒有實例變量诲祸。一個類定義可以保證實現(xiàn)任意數(shù)量的正式協(xié)議浊吏。
空房
可在OS X v10.6中及更高版本。
不適用于64位應(yīng)用程序救氯。
宣稱
objc / runtime.h
objc_property_attribute_t
定義一個屬性的屬性找田。
typedef結(jié)構(gòu){
為const char *名稱;
為const char *值;
} objc_property_attribute_t;
場
名
該屬性的名稱。
值
該屬性的值(通常為空)着憨。
空房
可在OS X v10.7及更高版本墩衙。
宣稱
objc / runtime.h
例如數(shù)據(jù)類型
這些都是表示對象,類和超類的數(shù)據(jù)類型。
ID指向一個類的實例漆改。
objc_object表示一個類的實例植袍。
objc_super指定實例的父類。
ID
一個指針籽懦,指向一個類的實例。
typedef結(jié)構(gòu)objc_object * ID;
空房
可在OS X v10.6中及更高版本氛魁。
宣稱
objc / objc.h
objc_object
表示一個類的實例暮顺。
結(jié)構(gòu)objc_object {
ISA類;
};
場
ISA
其中一個指針,指向類定義這個對象是一個實例秀存。
討論
當(dāng)你創(chuàng)建一個特定的類的實例捶码,所分配的內(nèi)存中包含objc_object數(shù)據(jù)結(jié)構(gòu),它直接后跟類的實例變量的數(shù)據(jù)或链。
在頁頭和allocWithZone: Foundation框架類NSObject的方法使用功能class_createInstance創(chuàng)建objc_object數(shù)據(jù)結(jié)構(gòu)惫恼。
objc_super
指定實例的父類。
結(jié)構(gòu)objc_super
{
ID接收器;
Class類;
};
場
接收器
類型的指針I(yè)D澳盐。指定一個類的實例祈纯。
類
一個指針,指向一個類的數(shù)據(jù)結(jié)構(gòu)叼耙。指定實例消息的特定超腕窥。
討論
編譯器會生成objc_super數(shù)據(jù)結(jié)構(gòu)遇到的時候超關(guān)鍵字作為信息的接收者。它指定要傳 ??遞消息的特定超類的類定義筛婉。
空房
可在OS X v10.6中及更高版本簇爆。
宣稱
objc / message.h
布爾值
BOOL
類型來表示一個布爾值。
的typedef符號字符BOOL;
討論
BOOL明確正式簽訂@encode(布爾)是?而不是?即使-funsigned爽撒,字符被使用入蛆。
對于值,請參閱“布爾值”硕勿。
特別注意事項
由于類型BOOL實際上是字符哨毁,它不表現(xiàn)在以同樣的方式為C _Bool值或C + + 布爾值。例如首尼,有條件的在下面的代碼會是假的在i386(和真正的在PPC):
(BOOL)值{
返回256;
}
然后//
如果([個體值])doStuff();
相比之下挑庶,有條件的在下面的代碼將在所有平臺上(即使真正的sizeof(BOOL)== 1):(布爾)值{
返回256;
}
然后//
如果([個體值])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值
這些宏定義類和實例的空值率挣。
#定義零__DARWIN_NULL
#定義無__DARWIN_NULL
常量
無
定義ID空實例。
可在OS X 10.0版和更高版本露戒。
聲明中IONDRVLibraries.h椒功。
無
定義ID為空類。
可在OS X 10.0版和更高版本智什。
宣布在objc / objc.h动漾。
宣稱
objc.h
調(diào)度函數(shù)原型
這個宏表示調(diào)度功能是否必須強制轉(zhuǎn)換為相應(yīng)的函數(shù)指針類型。
#定義OBJC_OLD_DISPATCH_PROTOTYPES 1
常量
OBJC_OLD_DISPATCH_PROTOTYPES
OBJC_OLD_DISPATCH_PROTOTYPES == 0強制執(zhí)行調(diào)度功能必須強制轉(zhuǎn)換為相應(yīng)的函數(shù)指針類型的規(guī)則荠锭。
可在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
局部變量的存儲時間
這個宏表示存儲在特定的局部變量的值不應(yīng)積極優(yōu)化過程中釋放的編譯器赔桌。
#定義NS_VALID_UNTIL_END_OF_SCOPE
常量
NS_VALID_UNTIL_END_OF_SCOPE
標(biāo)記類型的局部變量ID或指針到ObjC對象類型,以便存儲到這些局部變量的值不積極優(yōu)化過程中釋放的編譯器渴逻。相反疾党,該值被保持,直到該變量被分配給一次惨奕,或局部變量的范圍的端部(如在一個復(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
指定一個弱引用關(guān)聯(lián)的對象港粱。
可在OS X v10.6中及更高版本螃成。
宣布在objc / runtime.h旦签。
OBJC_ASSOCIATION_RETAIN_NONATOMIC
指定的強引用關(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
指定的強引用關(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威创。