Objective-C runtime是一個運行庫,它提供對Objective-C語言的動態(tài)屬性的支持,因此所有Objective-C應(yīng)用程序都鏈接到它。Objective-C運行庫支持函數(shù)在位于/usr/lib/libobjc.A.dylib的共享庫中實現(xiàn)。
在Objective-C中編程時,通常不需要直接使用Objective-C運行時庫。此API主要用于開發(fā)Objective-C和其他語言之間的橋接層,或用于低級調(diào)試。
Objective-C運行庫的macOS實現(xiàn)是Mac獨有的。對于其他平臺,GNU編譯器集合使用類似的API提供了不同的實現(xiàn)。本文檔僅涉及macOS實現(xiàn)。
底層Objective-C運行時API在osx版本10.5中進(jìn)行了顯著更新。許多函數(shù)和所有現(xiàn)有的數(shù)據(jù)結(jié)構(gòu)都被新函數(shù)所取代。舊的函數(shù)和結(jié)構(gòu)在32位模式下不推薦使用,而在64位模式中則不存在。即使在64位模式的類計數(shù)、協(xié)議計數(shù)、每個類的方法、每個類的ivar、每個方法的參數(shù)、每個方法的sizeof(所有參數(shù))和類版本號中,API也將多個值約束為32位int。此外,新的Objective-cabi(這里沒有描述)進(jìn)一步將sizeof(一個實例)限制為32位,將另外三個值限制為每個類的24位方法、每個類的ivar和sizeof(單個ivar)。最后,過時的NXHashTable和NXMapTable被限制為40億個條目。
常用的runtime API 主要有以下幾種:
1、objc_xxx系列函數(shù)

2、class_xxx系列函數(shù)

3、object_xxx系列函數(shù)

4、method_xxx系列函數(shù)

5、property_xxx系列函數(shù)

6、protocol_xxx系列函數(shù)

7、ivar_xxx系列函數(shù)

8、sel_xxx系列函數(shù)

9、imp_xxx系列函數(shù)

注:runtime API 匯總文檔 百度云下載,密碼:zcs2