黑马程序员技术交流社区

标题: 单例模式的解析 [打印本页]

作者: 夜空守望者    时间: 2015-9-5 09:57
标题: 单例模式的解析
(1) 某个类只能有一个实例。  
(2)他必须自行创建这个对象  
(3)必须自行向整个系统提供这个实例;
(4)为了保证实例的唯一性,我们必须将 -(id)copyWithZone:(NSZone *)zone  、+(id)allocWithZone:(NSZone *)zone、 -(id)retain、  -(NSUInteger)retainCount 、-(oneway void)release
 、-(id)autorelease  的实现方法进行覆盖。(具体实现请看程序)  

(5)这个方法必须是一个静态类
  1. GCD 创建单例

  2. +(id)sharedManager {
  3.     static MyManager*sharedMyManager = nil;
  4.     static dispatch_once_t  onceToken;
  5.    dispatch_once(&onceToken, ^{
  6.         sharedMyManager = [[self alloc] init];
  7.     });
  8.     return sharedMyManager;
  9. }



  10. 非-GCD 代码
  11. + (id)sharedManager {
  12.     @synchronized(self) {
  13.        if (sharedMyManager == nil)
  14.            sharedMyManager = [[self alloc] init];
  15.     }
  16.     returnsharedMyManager;
  17. }
复制代码



常见问题详见:
<http://blog.sina.com.cn/s/blog_797bb4bf01015t7u.html>
<http://blog.csdn.net/jiangwei0910410003/article/details/41928053>

作者: 七爷上课前    时间: 2015-9-5 19:57
厉害,都看到了基础视频的最后了,
作者: huilly    时间: 2015-9-5 20:23
支持一下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2