Objective-C 源码(四) 再次看 Method Swizzling
Method Swizzling 的原理 先打开 objc-private.h 文件 在 235行可以看到 Method的定义: typedef struct method_t *Method; 然后在 objc-runtime-new.h 文件中第82行可以看到: struct method_t { SEL name; const char *types; IMP imp; struct SortBySELAddress : public std::binary_function<const method_t&, const method_t&, bool> { bool operator() (const method_t& lhs, const method_t& rhs) { return lhs.name < rhs.name; } }; }; 从本质上讲:它就是struct method_t 类型的执行,包括了3个成员变量和一个成员函数: name:表示的是方法的名称,用于唯一标示该方法,比如@selector(viewWillAppear:); types:标示的是方法的返回值和参数类型; imp:是一个函数指针,指向方法的实现; SortBySELAddress 是一个根据name的地址对方法进行排序的函数。 由上面可以看出:Objective