CoderMrWu

生活诚可期,爱情价更高!

IOS单例模式

什么是单例模式呢?

简单的来说,一个单例类,在整个程序中只有一个实例,并且提供一个类方法供全局调用,在编译时初始化这个类,然后一直保存在内存中,到程序(APP)退出时由系统自动释放这部分内存。

示例代码:

#import "FZSingletonMode.h"

@implementation FZSingletonMode

static FZSingletonMode * singletonMode = nil;

#pragma mark - 初始化方法
+(instancetype)allocWithZone:(struct _NSZone *)zone{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        singletonMode = [super allocWithZone:zone];
    });
    return singletonMode;
}

+(instancetype)shareSingleton{
    if (singletonMode == nil) {
        return singletonMode = [FZSingletonMode new];
    }
    return singletonMode;
}

#pragma mark - 重写 copyWithZone: 方法,防止单例对象执行copy操作
-(id)copyWithZone:(NSZone *)zone{
    return singletonMode;
}

#pragma mark - 重写mutableCopyWithZone: 方法,单例对象执行mutableCopy操作
-(id)mutableCopyWithZone:(NSZone *)zone{
    return singletonMode;
}

@end

点赞