以上是afn1.2.1上的一段代码</pre><pre name="code" class="objc">static void AFSwizzleClassMethodWithClassAndSelectorUsingBlock(Class klass, SEL selector, id block) { Method originalMethod = class_getClassMethod(klass, selector); IMP implementation = imp_implementationWithBlock((AF_CAST_TO_BLOCK)block); class_replaceMethod(objc_getMetaClass([NSStringFromClass(klass) UTF8String]), selector, implementation, method_getTypeEncoding(originalMethod)); }
以下是runtime.h的一段代码
/** * Returns the metaclass definition of a specified class. * * @param name The name of the class to look up. * * @return The \c Class object for the metaclass of the named class, or \c nil if the class * is not registered with the Objective-C runtime. * * @note If the definition for the named class is not registered, this function calls the class handler * callback and then checks a second time to see if the class is registered. However, every class * definition must have a valid metaclass definition, and so the metaclass definition is always returned, * whether it’s valid or not. */ OBJC_EXPORT Class objc_getMetaClass(const char *name) __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
这个方法能够返回 metaclass
附上参考afn文件地址https://code.csdn.net/titer1991/AFNetworking/tree/1.2.1/AFNetworking/AFHTTPRequestOperation.m
objc_getMetaClass在afn1.2.1中的使用
最新推荐文章于 2022-04-15 14:34:26 发布