美文网首页
iOS单例模式

iOS单例模式

作者: super_2e20 | 来源:发表于2017-12-14 15:56 被阅读0次
    • 单例:很霸道,很专一
      定义:一个类,在整个程序当中只允许通过类方法创建一个对象,在调用这个类的属性和方法的时候,只能通过这个对象,这就是单例

    • 作用:
      1.保值
      2.可以建立一个公共的访问点,在需要的时候调用它,

      单例属于设计模式(前人总结的一些经验,目前大约是32种,能讲到大约7-8种)的一种,
      常用的: MVC KVC KVO 单例 代理 通知 工厂

      // 1.设置静态的全局变量
      static Setting *sign = nil;
     // 存储在静态存储区
     @implementation Setting
    
      + (Setting *)sharedSingle
    {
    // 2.保证线程安全
      @synchronized(self)
     {
      // 3.当对象不存在时,创建对象。当以后再创建对象时,由于sign是静态变量,所以不为空,不会再创建新的对象了
        
        if (sign == nil) {
            sign = [[Setting alloc] init];
        }
    }
     // 返回自己
    return sign;
    }
    
    
    // 这个方法是调用alloc方法时,alloc内部实际调用的创建对象的方法
    // 注意:在实际中若要保证对象的绝对唯一,并不是只需要重写这一个方  法,还有copywithzone:等
     + (id)allocWithZone:(struct _NSZone *)zone
    {
       @synchronized(self)
    {
        if ((self == nil)) {
            sign = [super allocWithZone:zone];
        }
    }
    return sign;
    }
    
    + (void)releaseSingle // 放弃当前的单例对象
    {
    if (sign) {
        sign = nil;
    }
    }
    

    相关文章

      网友评论

          本文标题:iOS单例模式

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