快捷搜索:

快速上手一个项目

快速上手一个项目

媒介:

对付一个大年夜项目而言,最烦恼的便是在浩繁界面难以找到对应的viewController,要改个器械都要花好长的光阴去找对应的类。

分外是当你接手一个大年夜项目的时刻,对整体的营业逻辑不认识,整体的架构体系不认识,让你修复某个页面的BUG,预计你找这个页面所对应的viewController都要找良久。

思虑

能否有一种要领可以快速让你上手一个大年夜项目?快速找到某个页面所对应的viewController ?

思路

在每一个页面呈现的时刻,都打印出哪个类即将呈现,如下图所示

页面 log

办理规划

规划1

- 给全部项目中建立一个基类的viewController,然后将项目中所有的viewController都承袭于基类的viewController,然后重写基类中的viewWillAppear措施

- (void)viewWillAppear:(BOOL)animated {

[super viewWillAppear:animated];

NSString *className = NSStringFromClass([self class]);

NSLog(@"%@ will appear", className);

}

规划2

- 给UIViewContoller建立一个分类,在分类里进行措施的互换,既保留了蓝本的措施,又有打印信息

//UIViewController+Swizzling.m

//CollectionsOfExample

//

//Created by mac on 16/10/1.

//Copyright ? 2016年 chenfanfang. All rights reserved.

#import "UIViewController+Swizzling.h"

#import @implementation UIViewController (Swizzling)

+ (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];

}

@end

优毛病阐发

规划1适用于一个新项目,从零开始搭建的项目,建立一个基类controller,这种编程思惟异常可取。但对付一个已经成型的项目,则规整洁行不通,你总不能建议一个基类,让后将所有的controller承袭的类都改成基类吧?这工程量太大年夜,太麻烦。

规划2 不论是从零开始搭建的项目,照样已经成型的项目,规划2都适用。

文章转自 chenfanfang 的简书

您可能还会对下面的文章感兴趣: