您的位置:首页 > 产品设计 > UI/UE

【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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐