查看: 1991|回复: 0

[IOS开发教程] IOS 中两种单例模式的写法实例详解

发表于 2017-8-2 08:00:02
尚学堂AD

iOS的单例模式有两种官方写法,如下:

(1)不使用GCD

  1. #import "ServiceManager.h"
  2. static ServiceManager *defaultManager;
  3. @implementation ServiceManager
  4. +(ServiceManager *)defaultManager{
  5. if(!defaultManager)
  6. defaultManager=[[self allocWithZone:NULL] init];
  7. return defaultManager;
  8. }
  9. @end
复制代码

(2)使用GCD

  1. #import "ServiceManager.h"
  2. @implementation ServiceManager
  3. +(ServiceManager *)sharedManager{
  4. static dispatch_once_t predicate;
  5. static ServiceManager * sharedManager;
  6. dispatch_once(&predicate, ^{
  7. sharedManager=[[ServiceManager alloc] init];
  8. });
  9. return sharedManager;
  10. }
  11. @end
复制代码

dispatch_once这个函数,它可以保证整个应用程序生命周期中某段代码只被执行一次!

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!



回复

使用道具 举报