A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一个Person类,要保证无论什么情况下创建Person对象返回的都是同一个对象。用单例设计模式怎么写出来?


3 个回复

倒序浏览
什么是单例设计模式。。。。
回复 使用道具 举报
单利模式?
回复 使用道具 举报
  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确保只会创建一次实例,并且保证线程安全。单例模式最容易忽视的就是多线程


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马