1.單例模式
單例模式是一種常用的設(shè)計(jì)模式,對于一個(gè)單例類,必須保證任意時(shí)刻只有一個(gè)單例對象,并且自行實(shí)例化該對象,并向整個(gè)系統(tǒng)提供該對象,也就是說無論實(shí)例化單例對象多少次,都只能創(chuàng)建出一個(gè)對象,該對象是全局的能夠整個(gè)系統(tǒng)所訪問
單例對象很像c中全局變量,單例類可以實(shí)現(xiàn)不同對象之間的數(shù)據(jù)共享
2.單例對象的創(chuàng)建方式
一般是以shared/current/default開頭, 并且是類方法
3.單例模式的應(yīng)用
1:單例類可以實(shí)現(xiàn)不同對象之間的數(shù)據(jù)共享
2:當(dāng)創(chuàng)建一個(gè)類需要消耗很大的性能的時(shí)候
4.單例創(chuàng)建
//SingleClass.h文件
#import <Foundation/Foundation.h>
@interface SingleClass : NSObject
@property (copy, nonatomic)NSString *name;
//單例類提供的一種創(chuàng)建單例對象方法
+ (SingleClass *)sharedSingleClass;
@end
//SingleClass.m文件
#import "SingleClass.h"
//1:創(chuàng)建一個(gè)全局靜態(tài)的單例子對象指針,初始值為nil
static SingleClass *single = nil;
@implementation SingleClass
+ (SingleClass *)sharedSingleClass{
//2:調(diào)用GCD的once方法//網(wǎng)絡(luò):多線程
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{//大括號里面代碼在整個(gè)程序運(yùn)行過程只會(huì)被執(zhí)行一次//block-->代碼塊,代碼段-->函數(shù)指針
//3:實(shí)例化single指針
single = [[SingleClass alloc] init];//第一次調(diào)用該方法的對象才能進(jìn)行實(shí)例化
});
return single;//最后將實(shí)例化的對象返回//從第二次調(diào)用該方法,返回的都是第一次實(shí)例化的對象的首地址
}
@end