单例类的创建

1.+ 静态方法,一般用share

2.创建static 类对象

3.重写mutableCopy,copy,allocWithZone(类方法),init四个方法

if(..==nil){

创建一个单例很多办法,苹果官方文档中的写法:

static AccountManager *DefaultManager = nil;

+ (AccountManager *)defaultManager {

if(!DefaultManager) 

DefaultManager = [[self allocWithZone:NULL] init];

return DefaultManager;

}

在iOS4之后有了另外一种写法:

+ (AccountManager *)sharedManager

{

static AccountManager *sharedAccountManagerInstance = nil;

static dispatch_once_t predicate;

dispatch_once(&predicate, ^{

sharedAccountManagerInstance = [[self alloc] init];

});

return sharedAccountManagerInstance;

}

该写法来自objcolumnist,文中提到,该写法具有以下几个特性:

1. 线程安全。

2. 满足静态分析器的要求。

3. 兼容了ARC

你可能感兴趣的:(单例类的创建)