關(guān)于抽取工具類思想-數(shù)據(jù)持久化的考慮

  • 對(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;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、深復(fù)制和淺復(fù)制的區(qū)別? 1、淺復(fù)制:只是復(fù)制了指向?qū)ο蟮闹羔?,即兩個(gè)指針指向同一塊內(nèi)存單元!而不復(fù)制指向?qū)ο蟮?..
    iOS_Alex閱讀 1,530評(píng)論 1 27
  • 什么是淘寶客 一、什么是淘寶客 1、背景 (1)營(yíng)銷費(fèi)用受限:淘寶、天貓兩大電商平臺(tái)需要大量的網(wǎng)站流量。但是只是靠...
    K1024閱讀 1,029評(píng)論 1 4
  • 記住這一天 12月13日,南京,中國,不可...
    凡心塵語閱讀 681評(píng)論 2 2

友情鏈接更多精彩內(nèi)容