對(duì)于界面中的某些存儲(chǔ),或者某些繁瑣的判斷,或者影響主架構(gòu)的代碼,不應(yīng)該將其暴露在外邊。所以需要建一些特殊的類,專門終于這些事情的處理。我們把這些類稱為工具類。
所謂工具類,是獨(dú)立的,不依靠任何對(duì)象。繼承自NSObject 。(耦合性低) 調(diào)用時(shí),也應(yīng)該及其方便才行。 一般最好用類方法 設(shè)置接口。 有點(diǎn)像 蒙版(HUD)的樣式。 (個(gè)人認(rèn)為它就是一個(gè)工具)。 (我也不是很確定,但是自己覺得這個(gè)工具類應(yīng)該可以說是一種單例模式的體現(xiàn)了吧)。
對(duì)于類的名字,應(yīng)該盡量淺顯 ,明了。
如果不會(huì)寫的話,可以看外邊是怎么用的, 必要的時(shí) 模仿蘋果的方法做法。
比如封裝偏好設(shè)置的 存儲(chǔ)類。 可以仿照蘋果的做法
[ [ NSUserDefaults standardUserDefaults] setObject:id forKey:@“”];
那么我就可以讓自己的工具類 ToolSave 設(shè)置一個(gè)類方法 + (instancetype)setObject:(id)id forKey:(NSString *)string;
它的實(shí)現(xiàn)可以這樣寫,讓其內(nèi)部調(diào)用系統(tǒng)方法即可,(相當(dāng)于騙一騙用戶,或者不懂的人,但這種思維是必須要有的,因?yàn)槟愕姆椒?,必須要有依有?jù))
實(shí)現(xiàn):
+ (instancetype)setObject:(id)id forKey:(NSString *)string
{
return [ [ NSUserDefaults standardUserDefaults] setObject:id forKey:string];
}
那么外邊調(diào)用的時(shí)候,只需有頭文件導(dǎo)入然后 直接 調(diào)用 [ToolSave setObject: forKey:];就可以進(jìn)行數(shù)據(jù)的存儲(chǔ)。
對(duì)于繁瑣的判斷,使外界的代碼,缺少了生命。 那么我們就要給它賦予生命,以淺顯易懂的方法名字(基本都是模仿蘋果的方法名字),外界簡(jiǎn)練的代碼,實(shí)現(xiàn)相同的功能。
舉個(gè)例子吧。
#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];
// 對(duì)與以下的判斷展示給外界讓人看到,就有點(diǎn)煩
// 如果能夠簡(jiǎn)練到, 創(chuàng)建主窗口 -> 設(shè)置主窗口的根控制器 -> 顯示主窗口 就最好了。 藍(lán)色部分就是 整改后的代碼 。 如果將黃色部分都去掉的話,那么此處的代碼是不是很具有生命。
/* 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
- 方便外界的調(diào)用 “+ (instancetype) rootVc;"
- 對(duì)于方法的實(shí)現(xiàn)
- 當(dāng)然還有導(dǎo)入他們相關(guān)的頭文件了, 這個(gè)工具并不是很完美。(耦合性有點(diǎn)強(qiáng)),但是在精煉就有點(diǎn)不容易了,對(duì)比以前的做法,應(yīng)該好多了吧。
- 有沒有注意到,工具類其實(shí)很簡(jiǎn)單,外界怎么使用方便,內(nèi)部就進(jìn)行去實(shí)現(xiàn),需要的參數(shù),直接讓外界給你傳,完善自己的類。
+ (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;
}