黑马程序员技术交流社区

标题: OC单例设计模式,有大神帮我进来看下! [打印本页]

作者: 萌萌小喵喵    时间: 2015-5-4 23:23
标题: OC单例设计模式,有大神帮我进来看下!
一个Person类,要保证无论什么情况下创建Person对象返回的都是同一个对象。用单例设计模式怎么写出来?



作者: ydy96315    时间: 2015-5-5 07:07
什么是单例设计模式。。。。
作者: greatboygirl    时间: 2015-5-5 12:26
单利模式?
作者: 不给中我就送    时间: 2015-5-5 13:15
  1. Person.h
  2. #import<foundation/Foundation.h>
  3. @interfacePerson : NSObject {
  4.     NSString *someProperty;
  5. }
  6. @property(nonatomic, retain) NSString *someProperty;
  7. +(id)Person;
  8. @end
复制代码
  1. Person.m
  2. #import"Person.h"
  3. @implementationPerson
  4. @synthesizesomeProperty;
  5. #pragmamark Singleton Methods
  6. +(id)Person{
  7.     static Personr *Person= nil;
  8.     static dispatch_once_tonceToken;
  9.    dispatch_once(&onceToken, ^{
  10.         Person= [[self alloc] init];
  11.     });
  12.     return Person;
  13. }
  14. -(id)init {
  15.   if (self = [super init]) {
  16.       someProperty =[[NSString alloc] initWithString:@"Default Property Value"];
  17.   }
  18.   return self;
  19. }
  20. @end
复制代码
通过创建一个静态的Person对象,使用GCD的dispatch_once确保只会创建一次实例,并且保证线程安全。单例模式最容易忽视的就是多线程







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