其实在项目中让你找出你当前定位的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!!!