本文共 1576 字,大约阅读时间需要 5 分钟。
/// 演示安全性- (void)onceDemo{ for (NSInteger i = 0; i < 1000; i++) { NSLog(@"makrmarkmarkmark"); dispatch_async(dispatch_get_global_queue(0, 0), ^{ static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ NSLog(@"只执行一次"); }); }); }}
懒汉式
MusicPlayer.h
#import@interface MusicPlayer : NSObject// 定义全局访问点+ (instancetype)sharedMusicPlayer;@end
MusicPlayer.m
#import "MusicPlayer.h"@implementation MusicPlayer// 懒汉式单例 : 开发中只用这个// 开发中定义单例的方式+ (instancetype)sharedMusicPlayer{ static id instance; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ instance = [[self alloc] init]; }); return instance;}@end
开发时基本不是用这种方式
饿汉式
MusicPlayer.h
#import@interface MusicPlayer : NSObject// 定义全局访问点+ (instancetype)sharedMusicPlayer;@end
MusicPlayer.m
#import "MusicPlayer.h"@implementation MusicPlayerstatic id instance;// 饿汉式// 这个方法只在这个类第一次使用的时候,就调用;早于alloc调用// 只被调用一次,线程是安全的+ (void)initialize{ instance = [[MusicPlayer alloc] init];}+ (instancetype)sharedMusicPlayer{ return instance;}@end
转载地址:http://zfkii.baihongyu.com/