【iOS开发】让项目中的所有UIViewController打印自己的类名
2016-08-10 13:33
288 查看
上周公司有一个iOS开发者问了一个问题,就是什么在已经完成的项目中, 不修改任何代码 ,让每个UIViewController打印自己的 类名 ?
周末回去想了下,终于想出了一个比较合理的方法。。。。
具体思路就是:
利用Objective-C的特性给UIViewController添加一个分类;再通过runtime去截获UIViewController的viewDidLoad方法;
再重新实现viewDidLoad方法,并且添加打印类名方法。
核心代码:
+ (void)load { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ // get system viewDidLoad method Method viewDidLoad = class_getInstanceMethod(self, @selector(viewDidLoad)); // get the system implementation of viewDidLoad _VIMP viewDidLoad_VIMP = (_VIMP)method_getImplementation(viewDidLoad); // resetter the system implementation of viewDidLoad method_setImplementation(viewDidLoad, imp_implementationWithBlock(^ (id target , SEL action){ // the system viewDidLoad method viewDidLoad_VIMP(target , @selector(viewDidLoad)); // the new add NSLog method NSLog(@"自定义log :%@ did load",target); })); }); }
Demo地址 : Demo_RuntimeExchangeMethod
新浪微博:Hanrovey
163邮箱 : Hanrovey@163.com
相关文章推荐
- iOS开发-- 创建podspec文件,为自己的项目添加pod支持
- iOS开发中,如何将第三方或者自己生成的静态库(SDK)引入到自己的项目中?
- iOS开发小技巧--适当的清空模型中的某个数据,达到自己的需求,记得最后将数据还原(百思项目评论页面处理最热评论)
- iOS:使用Github托管自己本地的项目代码方式一:(Xcode方式:开发工具Xcode配置Git,由Xcode-->Source Control-->Commit)
- 把所有界面的状态栏字体颜色设置为白色--iOS开发系列---项目中成长的知识一
- iOS项目开发实战——使用Xcode6设计自己定义控件与图形
- iOS开发中的错误整理,百思项目'我的'模块,tableFooterViewHeight的问题.提醒自己对KVO和Block的运用欠缺
- IOS 项目开发 必备的第三方类及需自己开发的第三方
- iOS开发:GitHub 上传自己的小项目/demo
- 项目开发过程中自己的总结
- PDA打印处罚单系统项目模块设计--开发代码
- 开发自己系统打印模块(一)
- 让自己开发的iOS App允许用户通过itunes共享文件
- 自己开发的Grid组件 针对IOS的
- 自己拿项目,软件设计开发,释放你的力量
- 【iOS-Cocos2d游戏开发之三】CCScene切换的所有特效(27种)以及设置屏幕横竖屏!
- 【iOS-Cocos2d游戏开发之三】CCScene切换的所有特效(28种)以及设置屏幕横竖屏!
- iOS开发之在google地图上显示自己的位置
- MKMapVIew学习系列1-iOS开发之在google地图上显示自己的位置
- Spring 2.5 jar 所有开发包及完整文档及项目开发实例