模仿苹果方式单例

苹果单例实现特点:
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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容