接上次的話(huà)題,繼續就objc/runtime進(jìn)行討論.
經(jīng)過(guò)今晚的探究,基本掌握了運行時(shí)的函數規則,總的有如下幾種函數前綴.
在后邊的文章中我會(huì )就一些問(wèn)題再次討論,本文權當做API的速查手冊使用.
| 函數名稱(chēng) | 函數作用 |
|---|---|
objc_getClass | 獲取Class對象 |
objc_getMetaClass | 獲取MetaClass對象 |
objc_allocateClassPair | 分配空間,創(chuàng )建類(lèi)(僅在 創(chuàng )建之后,注冊之前 能夠添加成員變量) |
objc_registerClassPair | 注冊一個(gè)類(lèi)(注冊后方可使用該類(lèi)創(chuàng )建對象) |
objc_disposeClassPair | 注銷(xiāo)某個(gè)類(lèi) |
objc_allocateProtocol | 開(kāi)辟空間創(chuàng )建協(xié)議 |
objc_registerProtocol | 注冊一個(gè)協(xié)議 |
objc_constructInstance | 構造一個(gè)實(shí)例對象(ARC下無(wú)效) |
objc_destructInstance | 析構一個(gè)實(shí)例對象(ARC下無(wú)效) |
objc_setAssociatedObject | 為實(shí)例對象關(guān)聯(lián)對象 |
objc_getAssociatedObje*ct | 獲取實(shí)例對象的關(guān)聯(lián)對象 |
objc_removeAssociatedObjects | 清空實(shí)例對象的所有關(guān)聯(lián)對象 |
objc_msgSend | 發(fā)送ObjC消息 |
-
objc_系列函數關(guān)注于宏觀(guān)使用,如類(lèi)與協(xié)議的空間分配,注冊,注銷(xiāo)等操作
| 函數名稱(chēng) | 函數作用 |
|---|---|
class_addIvar | 為類(lèi)添加實(shí)例變量 |
class_addProperty | 為類(lèi)添加屬性 |
class_addMethod | 為類(lèi)添加方法 |
class_addProtocol | 為類(lèi)遵循協(xié)議 |
class_replaceMethod | 替換類(lèi)某方法的實(shí)現 |
class_getName | 獲取類(lèi)名 |
class_isMetaClass | 判斷是否為元類(lèi) |
objc_getProtocol | 獲取某個(gè)協(xié)議 |
objc_copyProtocolList | 拷貝在運行時(shí)中注冊過(guò)的協(xié)議列表 |
class_getSuperclass | 獲取某類(lèi)的父類(lèi) |
class_setSuperclass | 設置某類(lèi)的父類(lèi) |
class_getProperty | 獲取某類(lèi)的屬性 |
class_getInstanceVariable | 獲取實(shí)例變量 |
class_getClassVariable | 獲取類(lèi)變量 |
class_getInstanceMethod | 獲取實(shí)例方法 |
class_getClassMethod | 獲取類(lèi)方法 |
class_getMethodImplementation | 獲取方法的實(shí)現 |
class_getInstanceSize | 獲取類(lèi)的實(shí)例的大小 |
class_respondsToSelector | 判斷類(lèi)是否實(shí)現某方法 |
class_conformsToProtocol | 判斷類(lèi)是否遵循某協(xié)議 |
class_createInstance | 創(chuàng )建類(lèi)的實(shí)例 |
class_copyIvarList | 拷貝類(lèi)的實(shí)例變量列表 |
class_copyMethodList | 拷貝類(lèi)的方法列表 |
class_copyProtocolList | 拷貝類(lèi)遵循的協(xié)議列表 |
class_copyPropertyList | 拷貝類(lèi)的屬性列表 |
-
class_系列函數關(guān)注于類(lèi)的內部,如實(shí)例變量,屬性,方法,協(xié)議等相關(guān)問(wèn)題
| 函數名稱(chēng) | 函數作用 |
|---|---|
object_copy | 對象copy(ARC無(wú)效) |
object_dispose | 對象釋放(ARC無(wú)效) |
object_getClassName | 獲取對象的類(lèi)名 |
object_getClass | 獲取對象的Class |
object_setClass | 設置對象的Class |
object_getIvar | 獲取對象中實(shí)例變量的值 |
object_setIvar | 設置對象中實(shí)例變量的值 |
object_getInstanceVariable | 獲取對象中實(shí)例變量的值 (ARC中無(wú)效,使用object_getIvar) |
object_setInstanceVariable | 設置對象中實(shí)例變量的值 (ARC中無(wú)效,使用object_setIvar) |
-
objcet_系列函數關(guān)注于對象的角度,如實(shí)例變量
| 函數名稱(chēng) | 函數作用 |
|---|---|
method_getName | 獲取方法名 |
method_getImplementation | 獲取方法的實(shí)現 |
method_getTypeEncoding | 獲取方法的類(lèi)型編碼 |
method_getNumberOfArguments | 獲取方法的參數個(gè)數 |
method_copyReturnType | 拷貝方法的返回類(lèi)型 |
method_getReturnType | 獲取方法的返回類(lèi)型 |
method_copyArgumentType | 拷貝方法的參數類(lèi)型 |
method_getArgumentType | 獲取方法的參數類(lèi)型 |
method_getDescription | 獲取方法的描述 |
method_setImplementation | 設置方法的實(shí)現 |
method_exchangeImplementations | 替換方法的實(shí)現 |
-
method_系列函數關(guān)注于方法內部,如果方法的參數及返回值類(lèi)型和方法的實(shí)現
| 函數名稱(chēng) | 函數作用 |
|---|---|
property_getName | 獲取屬性名 |
property_getAttributes | 獲取屬性的特性列表 |
property_copyAttributeList | 拷貝屬性的特性列表 |
property_copyAttributeValue | 拷貝屬性中某特性的值 |
-
property_系類(lèi)函數關(guān)注與屬性*內部,如屬性的特性等
| 函數名稱(chēng) | 函數作用 |
|---|---|
protocol_conformsToProtocol | 判斷一個(gè)協(xié)議是否遵循另一個(gè)協(xié)議 |
protocol_isEqual | 判斷兩個(gè)協(xié)議是否一致 |
protocol_getName | 獲取協(xié)議名稱(chēng) |
protocol_copyPropertyList | 拷貝協(xié)議的屬性列表 |
protocol_copyProtocolList | 拷貝某協(xié)議所遵循的協(xié)議列表 |
protocol_copyMethodDescriptionList | 拷貝協(xié)議的方法列表 |
protocol_addProtocol | 為一個(gè)協(xié)議遵循另一協(xié)議 |
protocol_addProperty | 為協(xié)議添加屬性 |
protocol_getProperty | 獲取協(xié)議中的某個(gè)屬性 |
protocol_addMethodDescription | 為協(xié)議添加方法描述 |
protocol_getMethodDescription | 獲取協(xié)議中某方法的描述 |
| 函數名稱(chēng) | 函數作用 |
|---|---|
ivar_getName | 獲取Ivar名稱(chēng) |
ivar_getTypeEncoding | 獲取類(lèi)型編碼 |
ivar_getOffset | 獲取偏移量 |
| 函數名稱(chēng) | 函數作用 |
|---|---|
sel_getName | 獲取名稱(chēng) |
sel_getUid | 注冊方法 |
sel_registerName | 注冊方法 |
sel_isEqual | 判斷方法是否相等 |
| 函數名稱(chēng) | 函數作用 |
|---|---|
imp_implementationWithBlock | 通過(guò)代碼塊創(chuàng )建IMP |
imp_getBlock | 獲取函數指針中的代碼塊 |
imp_removeBlock | 移除IMP中的代碼塊 |
聯(lián)系客服