美文网首页
OC单例模式实现(ARC)

OC单例模式实现(ARC)

作者: 木子尚武 | 来源:发表于2016-06-07 15:15 被阅读212次

    单例是在我们在项目学习特别是在工具类的抽取中经常用到的一种设计模式。说道底,单例就是一个类唯一的实例对象,我们无法通过alloc等其他方法来开辟一块新的内存,创建这个类的第二个实例对象。从而达到易于外界访问,节约系统资源的目的。
    那么现在我们就模仿系统手动创建一个单例,首先声明一个静态的实例对象:

  static Person *_per;

    程序启动立即创建实例对象

   //当类被加载到内存当中时,就会调用load.
+(void)load {
   //1.程序一启动,就创建一个对象
   Person *per = [[self alloc] init];
   //类方法是不能访问当前类的成员属性.
   //self.per = per;
   _per = per;
   
}

    重写系统的allocWithZone:方法

  // 重写allocWithZone方法,
+ (instancetype)allocWithZone:(struct _NSZone *)zone{
    if (_per) {
      
       
      NSException *exc = [NSException exceptionWithName:@"NSInternalInconsistencyException" reason:@"There can only be one Person instance." userInfo:nil];
        //抛出异常
       [exc raise];
   }
       //保持系统的默认做法
   return [super alloc];
}

创建快速sharePerson方法,保证只有一个内存

+ (Person *)sharePerson {
   return _per;
}

重写系统的其他构造方法

   - (id)copyWithZone:(struct _NSZone *)zone
  { 
         return _instance;
    }

   - (id)mutableCopyWithZone:(NSZone *)zone
 { 
       return _instance;
 }

相关文章

  • OC单例模式实现(ARC)

    单例是在我们在项目学习特别是在工具类的抽取中经常用到的一种设计模式。说道底,单例就是一个类唯一的实例对象,我们无法...

  • iOS开发中ARC环境下单例模式

    单例模式 1.1 概念相关 (1)单例模式 **(2)使用场合 ** 1.2 ARC实现单例 **(1)步骤 **...

  • 单例模式的书写

    ARC OC 中的单例 根据OC单例 改写成 Swift 中的单例 OC调用swift,需要#import "单例...

  • 单例模式(单例宏)

    单例模式 单例模式(arc) 类的实现 调用单例 单例模式(mrc) 除了上边的方法我们在mrc的时候还需要增加一...

  • GCD&单例分析

    1.单例模式 1.1 概念相关 (1)单例模式 (2)使用场合 1.2 ARC实现单例 (1)步骤(重点) (2)...

  • iOS多线程与网络(2)--单例模式、NSoperation

    补充 1.单例模式 1.1 概念相关 (1)单例模式 (2)使用场合 1.2 ARC实现单例 (1)步骤 (2)相...

  • iOS - 单例模式

    1.单例模式 1.1 概念相关 (1)单例模式 (2)使用场合 1.2 ARC实现单例 (1)步骤 (2)相关代码...

  • iOS开发-单例模式

    1.单例模式 1.1 概念相关 (1)单例模式 (2)使用场合 1.2 ARC实现单例 (1)步骤 (2)相关代码...

  • iOS之单例模式

    单例模式 1.1 概念相关 (1)单例模式 (2)使用场合 1.2 ARC实现单例 (1)步骤 (2)相关代码 1...

  • 单例模式

    1.单例模式 1.1 概念相关 (1)单例模式 (2)使用场合 1.2 ARC实现单例 (1)步骤 (2)相关代码...

网友评论

      本文标题:OC单例模式实现(ARC)

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