oc非ARC机制实现单例模式

来源:互联网 发布:数据库内模式是什么 编辑:程序博客网 时间:2024/06/06 17:41

//
// 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

0 0
原创粉丝点击