国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

iOS App開發(fā)中使用設(shè)計模式中的單例模式的實例解析

2019-10-21 18:54:15
字體:
供稿:網(wǎng)友
單例模式是最簡單和基本的一種設(shè)計模式,下面我們就簡單解讀一下iOS中單例設(shè)計模式的用法,示例代碼還是為傳統(tǒng)的Objective-C,主要為了體現(xiàn)單例模式的思想,需要的朋友可以參考下
 

一、單例的作用
顧名思義,單例,即是在整個項目中,這個類的對象只能被初始化一次。它的這種特性,可以廣泛應(yīng)用于某些需要全局共享的資源中,比如管理類,引擎類,也可以通過單例來實現(xiàn)傳值。UIApplication、NSUserDefaults等都是IOS中的系統(tǒng)單例。

二、單例模式的兩種寫法
1,常用寫法

#import "LGManagerCenter.h"static LGManagerCenter *managerCenter;@implementation LGManagerCenter+(LGManagerCenter *)sharedManager{  if(!managerCenter)    managerCenter=[[self allocWithZone:NULL] init];  return managerCenter;}@end

2,用GCD創(chuàng)建單例類

#import "LGManagerCenter.h"@implementation LGManagerCenter+(LGManagerCenter *)sharedManager{  static dispatch_once_t predicate;  static LGManagerCenter * managerCenter;  dispatch_once(&predicate, ^{    managerCenter=[[LGManagerCenter alloc] init];  });  return managerCenter;}@end

其中dispatch_once函數(shù)只執(zhí)行一次。

三、代碼的優(yōu)化
通過上面的方法,我們已經(jīng)可以使用類方法來得到這個單例,但很多時候,項目的工程量很大,還有可能會很多開發(fā)者同時參與一個項目的開發(fā),為了安全與管理代碼的方便,也為了給不是這個單例的創(chuàng)作者但會用到這個單例的開發(fā)人員一些提示,我們通常會重寫一些方法:

首先我們自己實現(xiàn)一個alloc方法:

+(instancetype)myAlloc{  return [super allocWithZone:nil];}

將我們的單例實現(xiàn)方法略作修改:

+(ZYHPayManager *)sharedMamager{  static ZYHPayManager * manager;  if (manager==nil) {    manager=[[ZYHPayManager myAlloc]init];  }  return manager;}

將一些視圖實例化對象的方法重寫:

+(instancetype)alloc{  NSAssert(0, @"這是一個單例對象,請使用+(ZYHPayManager *)sharedMamager方法");  return nil;}+(instancetype)allocWithZone:(struct _NSZone *)zone{  return [self alloc];}-(id)copy{  NSLog(@"這是一個單例對象,copy將不起任何作用");  return self;}+(instancetype)new{  return [self alloc];}

注意:這里的alloc使用了斷言,讓任何視圖通過alloc創(chuàng)建對象的程序段斷在此處,給程序員提示。copy方法這里只是簡單的返回了原對象,并未做任何處理,打印信息給程序員提示。



注:相關(guān)教程知識閱讀請移步到IOS開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 湾仔区| 刚察县| 军事| 兴安盟| 长葛市| 白河县| 石嘴山市| 抚远县| 乳山市| 翼城县| 巴林左旗| 正阳县| 恩施市| 白朗县| 文水县| 涡阳县| 长乐市| 鹤岗市| 连城县| 龙海市| 湖州市| 遵化市| 安新县| 简阳市| 宜川县| 绥化市| 秀山| 宜阳县| 抚顺市| 乐至县| 雅安市| 景东| 中牟县| 驻马店市| 兴安县| 荆州市| 涞源县| 黄梅县| 台中县| 宜黄县| 息烽县|