單例物件建立
// 單例
#import "FileManager.h"
@implementation FileManager
//2.定義全域性的靜態當前單例物件的例項,並初始化為nil.
static FileManager *manager = nil;
//- (instancetype)init
//{
// self = [super init];
// if (self) {
// _name = @"預設值";
// }
// return self;
//}
//1.定義一個返回當前單例的物件的類方法
+ (FileManager *)sharedFileManger
{
//物件鎖,防止多個執行緒同時訪問建立多個物件。
@synchronized(self)
{//加鎖
//如果當前單例物件為空
if (!manager)
{
//建立當前單例物件
manager = [[FileManager alloc] init];
}
return manager;
}//解鎖
}
//3.重寫allocWithZone:方法。防止通過alloc建立一個新的例項。
//alloc出觸發這個方法
+ (instancetype)allocWithZone:(struct
{
//判斷當前單例物件是否為空,如果有值就直接返回,否則建立。
if (!manager)
{
manager = [super allocWithZone:zone];
}
returnmanager;
}
@end