前言
最近一直在整理原写过的一些工作方法,慢慢发一些吧,大佬们如果有更好的方法和建议请多指点
主要是围绕runtime
中的method_exchangeImplementations
方法交换做了两个小例子
- 项目runtime配置
Build Settings -> Enable Strict Checking of objc_msgSend Calls -> No
- 主要代码
// 拦截 实例方法并替换
//获取系统方法地址
Method sytemMethod = class_getInstanceMethod([NSBundle class], @selector(bundleIdentifier));
//获取自定义方法地址
Method customMethod = class_getInstanceMethod([NSBundle class], @selector(newBundleIdentifier));
//交换两个方法的实现
method_exchangeImplementations(sytemMethod, customMethod);
// 拦截 类方法并替换
//获取系统方法地址
Method sytemMethod = class_getClassMethod([UIFont class], @selector(systemFontOfSize:));
//获取自定义方法地址
Method customMethod = class_getClassMethod([UIFont class], @selector(newSystemFontOfSize:));
//交换两个方法的实现
method_exchangeImplementations(sytemMethod, customMethod);
- 代码内容
主要是根据自己的项目需求修改了
UIFont
类与NSBundld