單例模式(singleton)显押,顧名思義,單個(gè)實(shí)例待诅。也就是說,整個(gè)App lifetime期間熊镣,該類只能有一個(gè)實(shí)例對(duì)象卑雁。
iOS中實(shí)現(xiàn)單例模式通常使用下面兩種方法:
請(qǐng)容許我模仿系統(tǒng)UIApplication的實(shí)現(xiàn)來進(jìn)行編碼立由,我們假設(shè)可以這么做:)。
<pre>第一種:
+ (UIApplication)sharedApplication{
static UIApplication application = nil;
@synchronized(self){
if(application == nil){
application = [[UIApplication alloc]init];
}
}
return application;
}
</pre>
<pre>第二種:
+(UIApplication)sharedApplication{
static UIApplication application = nil;
static dispatch_once_t predicate;
//簡(jiǎn)單說一下下面這個(gè)函數(shù)序厉,其功能是保證在app生命周期中锐膜,只執(zhí)行一次參數(shù)中的block
dispatch_once(&predicate, ^{
application = [[UIApplication alloc]init];
});
return application;
}
</pre>
單例模式的應(yīng)用場(chǎng)景:
通常用于資源管理類,比如網(wǎng)絡(luò)請(qǐng)求弛房,文件管理等等道盏。