Objective-C創(chuàng)建單例
+ (Manager *)sharedManager {
static Manager *sharedManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedManager = [[Manager alloc] init];
})
return sharedManager;
}
Swift創(chuàng)建單例
class Manager {
static let shared = Manager()
private init() {}
}
確保唯一性
復寫allocWithZone、copyWithZone、mutablecopyWithZone,避免通過alloc init、copy方式創(chuàng)建單例對象。
+ (id)allocWithZone:(struct _NSZone *)zone
{
return [Manager sharedManager] ;
}
- (id)copyWithZone:(NSZone *)zone
{
return [Manager sharedManager] ;
}
- (id)mutablecopyWithZone:(NSZone *)zone
{
return [Manager sharedManager] ;
}