iOS的單例模式有兩種官方寫法,如下: (1)不使用GCD dispatch_once這個函數,它可以保證整個應用程式生命周期中某段代碼只被執行一次! ...
iOS的單例模式有兩種官方寫法,如下:
(1)不使用GCD
#import "ServiceManager.h" static ServiceManager *defaultManager; @implementation ServiceManager +(ServiceManager *)defaultManager{ if(!defaultManager) defaultManager=[[self allocWithZone:NULL] init]; return defaultManager; } @end
(2)使用GCD
#import "ServiceManager.h"
@implementation ServiceManager
+(ServiceManager *)sharedManager{
static dispatch_once_t predicate;
static ServiceManager * sharedManager;
dispatch_once(&predicate, ^{
sharedManager=[[ServiceManager alloc] init];
});
return sharedManager;
}
@end
dispatch_once這個函數,它可以保證整個應用程式生命周期中某段代碼只被執行一次!