-
对于界面中的某些存储,或者某些繁琐的判断,或者影响主架构的代码,不应该将其暴露在外边。所以需要建一些特殊的类,专门终于这些事情的处理。我们把这些类称为工具类。
-
所谓工具类,是独立的,不依靠任何对象。继承自NSObject 。(耦合性低) 调用时,也应该及其方便才行。 一般最好用类方法 设置接口。 有点像 蒙版(HUD)的样式。 (个人认为它就是一个工具)。 (我也不是很确定,但是自己觉得这个工具类应该可以说是一种单例模式的体现了吧)。
-
对于类的名字,应该尽量浅显 ,明了。
-
如果不会写的话,可以看外边是怎么用的, 必要的时 模仿苹果的方法做法。
-
比如封装偏好设置的 存储类。 可以仿照苹果的做法
[ [ NSUserDefaults standardUserDefaults] setObject:id forKey:@“”];
那么我就可以让自己的工具类 ToolSave 设置一个类方法 + (instancetype)setObject:(id)id forKey:(NSString *)string;
它的实现可以这样写,让其内部调用系统方法即可,(相当于骗一骗用户,或者不懂的人,但这种思维是必须要有的,因为你的方法名,必须要有依有据)
实现:
+ (instancetype)setObject:(id)id forKey:(NSString *)string
{
return [ [ NSUserDefaults standardUserDefaults] setObject:id forKey:string];
}
那么外边调用的时候,只需有头文件导入然后 直接 调用 [ToolSave setObject: forKey:];
就可以进行数据的存储。
-
对于繁琐的判断,使外界的代码,缺少了生命。 那么我们就要给它赋予生命,以浅显易懂的方法名字(基本都是模仿苹果的方法名字),外界简练的代码,实现相同的功能。
-
举个例子吧。
#import "AppDelegate.h"
#import "LXLTabBarController.h"
#import "LXLLaunchViewController.h"
#import "SaveTool.h"#import "RootTool.h"
@interface AppDelegate ()
@property(copy,nonatomic)NSString *lastVision;
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
self.window.rootViewController = [RootTool rootVc];
// 对与以下的判断展示给外界让人看到,就有点烦
// 如果能够简练到, 创建主窗口 -> 设置主窗口的根控制器 -> 显示主窗口 就最好了。 蓝色部分就是 整改后的代码 。 如果将黄色部分都去掉的话,那么此处的代码是不是很具有生命。
/* NSString *curVision = [NSBundle mainBundle].infoDictionary[@"CFBundleShortVersionString"];
NSLog(@"%@",curVision);
_lastVision = [SaveTool objectForKey:@"vision"];
if (![_lastVision isEqualToString:curVision]) {
LXLLaunchViewController *colVc = [[LXLLaunchViewController alloc]init];
colVc.view.backgroundColor = [UIColor redColor];
colVc.collectionView.backgroundColor = [UIColor redColor];
self.window.rootViewController = colVc;
[SaveTool setObject:curVision forKey:@"vision"];
_lastVision = curVision; }
else {
LXLTabBarController *tabVC = [[LXLTabBarController alloc]init];
self.window.rootViewController = tabVC;} */
[self.window makeKeyAndVisible];
return YES;
}
- 工具类 RootTool
- 方便外界的调用 “+ (instancetype) rootVc;"
- 对于方法的实现
- 当然还有导入他们相关的头文件了, 这个工具并不是很完美。(耦合性有点强),但是在精炼就有点不容易了,对比以前的做法,应该好多了吧。
- 有没有注意到,工具类其实很简单,外界怎么使用方便,内部就进行去实现,需要的参数,直接让外界给你传,完善自己的类。
+ (instancetype)rootVc
{
NSString *curVision = [NSBundle mainBundle].infoDictionary[@"CFBundleShortVersionString"];
NSLog(@"%@",curVision);
NSString *lastVision = [SaveTool objectForKey:@"vision”
];
UIViewController *vc;
if (![lastVision isEqualToString:curVision]) {
vc = [[LXLLaunchViewController alloc]init];
vc.view.backgroundColor = [UIColor redColor];
[SaveTool setObject:curVision forKey:@"vision"];
lastVision = curVision;
return vc;
}else
{
vc = [[LXLTabBarController alloc]init];
}
return vc;
}
网友评论