對于界面中的某些存儲,或者某些繁瑣的判斷,或者影響主架構的代碼,不應該將其暴露在外邊。所以需要建一些特殊的類,專門終于這些事情的處理。我們把這些類稱為工具類。
所謂工具類,是獨立的,不依靠任何對象。繼承自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;
}