天天看點

oc非ARC機制實作單例模式import “KIT.h”

//

// KIT.m

//

//

// Created by yz on 15/9/28.

// Copyright (c) 2015年 yz. All rights reserved.

//

import “KIT.h”

static KIT *_kit = nil;

@implementation KIT

+(instancetype)allocWithZone:(struct _NSZone *)zone

{

if (_kit == nil) {

static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{
        //此方法隻會運作一次
        _kit = [super allocWithZone:zone];

    });

}

return _kit;
           

}

-(instancetype)init

{

//隻初始化一次

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

_kit = [super init];

});

return _kit;
           

}

//此類方法等價于[類名 alloc]init]

+(instancetype)shareKit

{

return [[self alloc]init];

}

//此方法重寫不能繼承[super release]那樣_kit==nil因為開始的時候已經配置設定好空間,這樣就會讓_kit一直等于nil實作不了單例子

-(oneway void)release

{

}

-(instancetype)retain

{

return self;

}

@end

oc