iOS单例模式

2017-12-14  本文已影响0人  super_2e20
  // 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;
}
}
上一篇 下一篇

猜你喜欢

热点阅读