SEL original = @selector(imageNamed:);
SEL swizzle = @selector(sy_imageNamed:);
/// 需要用objc_getMetaClass,直接用[self class]无效
Class class = objc_getMetaClass(object_getClassName(self));
Method originalMethod = class_getClassMethod(class, @selector(imageNamed:));
Method swizzlingMethod = class_getClassMethod(class, @selector(sy_imageNamed:));
BOOL didAddMethod = class_addMethod(class, original, method_getImplementation(swizzlingMethod), method_getTypeEncoding(swizzlingMethod));
if (didAddMethod) {
class_replaceMethod(class, swizzle, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod));
} else {
method_exchangeImplementations(originalMethod, swizzlingMethod);
}
iOS 交换系统类方法
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 需求: 每次UIImage加载图片,告诉我是否加载成功 当系统提供的控件不能满足我们的需求的时候,我们...
- 导入<objc/runtime.h> 1. 获得某个类的类方法 Method m1 = class_getClas...
- Method Swizzling 是什么 Method Swizzling是objective-c中的黑魔法,算是...
- 我们之前说到,想要统计每个页面的启动时间。我们可以知道,每个页面都继承了UIViewController,假设每个...
- 现在一段时间在回顾小runtime 的一些知识点。搜了一些资料,自己学习后总结下,以便后面回顾。 Method S...