单例模式 Singleton 饿汉式(不常用)

network | | 访问(32)
#import "SoundTool.h"

@implementation SoundTool
static id _instance;// 用来保存唯一的单例对象

/**
 *  当类加载到OC运行时环境中(内存),就会调用一次(一个类只会加载1次)
 */
+ (void)load
{
    _instance = [[self alloc] init];
}

+ (id)allocWithZone:(struct _NSZone *)zone
{
    if (_instance == nil) { // 防止创建多次
        _instance = [super allocWithZone:zone];
    }
    return _instance;
}

+ (instancetype)sharedSoundTool
{
    return _instance;
}

- (id)copyWithZone:(NSZone *)zone
{
    return _instance;
}

///**
// *  当第一次使用这个类的时候才会调用
// */
//+ (void)initialize
//{
//    NSLog(@"SoundTool---initialize");
//}
@end

调用多次,结果仍然是调用同一个对象

SoundTool *tool1 = [SoundTool sharedSoundTool];
SoundTool *tool2 = [SoundTool sharedSoundTool];
SoundTool *tool3 = [SoundTool sharedSoundTool];
SoundTool *tool4 = [[SoundTool alloc] init];
NSLog(@"%@ %@ %@ %@", tool1, tool2, tool3, tool4);