iOS的单例模式有两种官方写法,如下:
1)不使用GCD的方式
#import "Manager.h" static Manager *manager; @implementation Manager +(Manager *)defaultManager{ if(!manager) manager=[[self allocWithZone:NULL] init]; return manager; } @end
2)使用GCD的方式
#import "Manager.h" @implementation Manager +(Manager *)sharedManager{ static dispatch_once_t predicate; static Manager * sharedManager; dispatch_once(&predicate, ^{ sharedManager=[[Manager alloc] init]; }); return sharedManager; } @end
注明:dispatch_once这个函数,它可以保证整个应用程序生命周期中某段代码只被执行一次!