美文网首页
单例模式(Singleton)

单例模式(Singleton)

作者: Mustard_Buli | 来源:发表于2016-03-16 14:18 被阅读35次

单例模式:整个程序的一个类只能有一个实例对象:(UIApplication、NSUserDefaults等都是IOS中的系统单例)

1.物理设备  eg:打印机

2.不可多个同时存在的资源  eg:数据库

单例的写法:

这是第一种,也是最简单、最常用的一种:

 #import "FileOpration.h" 
  
 static FileOpration *instance = nil; //静态变量,从定义开始到整个程序结束 
  
 @implementation FileOpration  
  
 + (instancetype)sharedFileOpration{ 
       if (instance == nil) {
     instance = [[FileOpration alloc]init];
     }
    return instance;
 }  

 @end

第二种写法,加入了线程,以及重写alloc方法:

+ (FileOperation *)sharedManager{ 
  static FileOperation *instance = nil; 
  static dispatch_once_t predicate; 
  dispatch_once(&predicate, ^{ 
      instance = [[self alloc] init]; 
  }); 
  return ManagerInstance; 
}

/* 重写alloc方法,在调用alloc方法的时候实际上是默认调用allocWithZone */
+ (instancetype)allocWithZone:(struct _NSZone *)zone{ 
  return [self sharedOperation];
}

相关文章

网友评论

      本文标题:单例模式(Singleton)

      本文链接:https://www.haomeiwen.com/subject/tnbqlttx.html