美文网首页
iOS 快速上手一个项目

iOS 快速上手一个项目

作者: 彦子凡 | 来源:发表于2018-06-06 17:06 被阅读43次
    • 对于一个大项目而言,最烦恼的就是在众多界面难以找到对应的viewController,要改个东西都要花好长的时间去找对应的类。
    • 特别是当你接手一个大项目的时候,对整体的业务逻辑不熟悉,整体的架构体系不熟悉,让你修复某个页面的BUG,估计你找这个页面所对应的viewController都要找好久

    解决方案

    1. 方案一:
    //整个项目中建立一个基类的viewController,然后将项目中所有的viewController都继承于基类的viewController,然后重写基类中的viewWillAppear方法
    - (void)viewWillAppear:(BOOL)animated {
        [super viewWillAppear:animated];
        NSString *className = NSStringFromClass([self class]);
        NSLog(@"%@ will appear", className);
    }
    
    1. 方案二(runtime的使用)
    //给UIViewContoller建立一个分类,在分类里进行方法的交换,既保留了原本的方法,又有打印信息
    + (void)load {
        //我们只有在开发的时候才需要查看哪个viewController将出现
        //所以在release模式下就没必要进行方法的交换
    #ifdef DEBUG
        //原本的viewWillAppear方法
        Method viewWillAppear = class_getInstanceMethod(self, @selector(viewWillAppear:));
        //需要替换成 能够输出日志的viewWillAppear
        Method logViewWillAppear = class_getInstanceMethod(self, @selector(logViewWillAppear:));
        //两方法进行交换
        method_exchangeImplementations(viewWillAppear, logViewWillAppear);
    #endif
    }
    - (void)logViewWillAppear:(BOOL)animated {
        NSString *className = NSStringFromClass([self class]);
        //在这里,你可以进行过滤操作,指定哪些viewController需要打印,哪些不需要打印
        if ([className hasPrefix:@"UI"] == NO) {
            NSLog(@"%@ will appear",className);
        }
        //下面方法的调用,其实是调用viewWillAppear
        [self logViewWillAppear:animated];
    }
    

    相关文章

      网友评论

          本文标题:iOS 快速上手一个项目

          本文链接:https://www.haomeiwen.com/subject/vsxisftx.html