模仿苹果方式单例

2017-04-10  本文已影响25人  i大猫哥

苹果单例实现特点:
1.外界不能调用alloc方法,如果调用就抛异常。
2.提供一个方法给外界调用,生成对象。
3.内部创建一次单例,在程序启动的时候创建。(利用load方法)

代码引用:

#import "Singleton.h"

@implementation Singleton

// 静态变量
static Singleton *_instance = nil;

// 启动的时候创建对象(这个方法会在程序每次启动的时候,把类加载到内存中)
+(void)load
{
    _instance = [[self alloc]init];
}

+(instancetype)shareSingleton
{
    return _instance;
}

// 重写alloc方法
+(instancetype)alloc
{
    // 判断_instance是否已经存在
    if (_instance) {
        
        // 如果存在抛出异常
        // 创建异常
       NSException *singException = [NSException exceptionWithName:@"NSInternalInconsistencyException" reason:@"There can only be one Singleton instance" userInfo:nil];
        
        // 抛出异常
        [singException raise];
        
    }
   return  [super alloc];
}

@end

上一篇 下一篇

猜你喜欢

热点阅读