火锅加糖

仗剑行千里,微躯敢一言。
曾为大梁客,不负信陵恩。

Vno Jekyll is a port of my Ghost theme vno.


Download the theme

Ios 单例的创建以及销毁

单例的创建需要注意的一些问题: 1.先定义一个静态的instance ,static MyClass _instance; 2.重写allocWithZone方法,此方法为对象分配空间必须调用方法; 3.定义一个share的类方法,能够被全局调用,并且方法内需要考虑线程安全 4.如果需要copy,需要遵守NSCopying协议,以及在copyWithZone中直接返回当前对象

声明静态instance

static MyClass _instance;

创建单例

**方法1**

+ (id)shareInstance {
    @synchronized(self) {//同步锁
        if (_instance == nil) {
            _instance = [[MyClass alloc] init];
        }
    }
    return _instance;
}

**销毁方法:**

+ (void)attemptDealloc {
    _instance = nil;
}

**方法2**

static dispath_once_t onceToken;
+ (id)shareInstance {
    dispatch_once(&onceToken, ^ {
        if (_instance == nil) {
            _instance = [[MyClass alloc] init];
        }
    });
    return _instance;
}

**销毁方法:**

+ (void)attemptDealloc {
    onceToken = 0;//只有置为0,GCD才会认为它从来未执行过,这样才能保证下次再次调用instance的时候,创建新的对象
    _instance = nil;
}

重写allocWithZone

//重写allocWithZone,里面实现跟方法一,方法二一致就行
+(id)allocWithZone:(struct _NSZone *)zone{
   static dispatch_once_t onceToken;
   dispatch_once(&onceToken, ^{
   if(_instance == nil)
      _instance = [MyClass alloc] init]; 
  });
   return _instance;
}
更早的文章

Ios 常见的属性关键字

iOS在声明属性时,在ARC环境下常用的关键字基本上有:readonly、readwrite、nonatomic、atomic、strong、retain、assign、weak、copy、static、const、extern等,接下来对这些关键字的异同进行分析。readonly和readwrite关键字从字面意思可以很清楚的了解其应用,readonly只读和readwrite可读写。readwrite是属性创建时的默认属性,同时拥有setter、getter方法,而readonly只生...…

继续阅读