Method類型是一個(gè)objc_method結(jié)構(gòu)體指針撒璧,而結(jié)構(gòu)體objc_method有三個(gè)成員:
An opaque type that represents a method in a class definition.typedef struct objc_method *Method;struct objc_method
SEL method_name;
// 方法名稱char *method_typesE;
// 參數(shù)和返回類型的描述字串干签,平常我們調(diào)用方法傳遞的參數(shù)和調(diào)用方法返回值IMP method_imp;
// 方法的具體的實(shí)現(xiàn)的指針,指向了方法實(shí)現(xiàn)的指針
Method所有方法
// 函數(shù)調(diào)用渡处,但是不接收返回值類型為結(jié)構(gòu)體
method_invoke
// 函數(shù)調(diào)用,但是接收返回值類型為結(jié)構(gòu)體
method_invoke_stret
// 獲取函數(shù)名
method_getName
// 獲取函數(shù)實(shí)現(xiàn)IMP
method_getImplementation
// 獲取函數(shù)type encoding
method_getTypeEncoding
// 復(fù)制返回值類型
method_copyReturnType
// 復(fù)制參數(shù)類型
method_copyArgumentType
// 獲取返回值類型
method_getReturnType
// 獲取參數(shù)個(gè)數(shù)
method_getNumberOfArguments
// 獲取函數(shù)參數(shù)類型
method_getArgumentType
// 獲取函數(shù)描述
method_getDescription
// 設(shè)置函數(shù)實(shí)現(xiàn)IMP
method_setImplementation
// 交換函數(shù)的實(shí)現(xiàn)IMP
method_exchangeImplementations