iOS每日一记之———————————————使用runtime黑魔法 来显示你当前是哪个VC

本文介绍了一种使用Swift语言和Objective-C运行时API的方法,通过在UIViewController的子类中注入日志记录来跟踪和识别哪些视图控制器正在加载。这种方法特别适用于开发阶段,可以帮助开发者快速定位当前显示的视图控制器。
摘要由CSDN通过智能技术生成

其实在项目中让你找出你当前定位的VC并不难比如说通过标题什么的 全局搜索下就能找到对应的VC了 但是假如这个标题是通过plist文件获取到的呢 这就尴尬了 上网查了下 可以使用runtime黑魔法去实现这个效果

OK 下面是干货时间

如果你的VC继承UIViewController  很简单 你写个Category 就行 下面是代码时间


#import "UIViewController+Swizzling.h"
#import <objc/runtime.h>
@implementation UIViewController (Swizzling)

+ (void)load {
    //我们只有在开发的时候才需要查看哪个viewController出现
    //所以在release模式下就没必要进行方法的交换
#ifdef DEBUG
    //原本的viewDidLoad方法
    Method viewDidLoad = class_getInstanceMethod(self, @selector(viewDidLoad));
    //需要替换成 能够输出日志的viewDidLoad
    Method logViewDidLoad = class_getInstanceMethod(self, @selector(logViewDidLoad));
    //两方法进行交换
    method_exchangeImplementations(viewDidLoad, logViewDidLoad);
    
#endif
    
}
- (void)logViewDidLoad {
    
    NSString *className = NSStringFromClass([self class]);

    NSLog(@"%@ 已经加载出来了!!!",className);
     //其实是调用viewDidLoad
    [self logViewDidLoad];
}


恩这样写的话 你就会在viewDidLoad中看到是哪个VC加载出来了



还有一种情况就是你所有VC都继承了 你写的一个基类VC 或者说是BaseViewController

这个更简单 你直接重写viewDidLoad方法就是了 SO easy!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值