企业自助建站哪家好,六盘水网站建设求职简历,专业美工设计网站建设,苏州模板建站哪家好一次执行 dispatch_once: 对应的代码只执行一次 , 并且它是线程安全的, 系统会自动这个函数加锁,保存同一时间只有一个线程去执行任务, 实现真正意义的一次性执行 什么时候需要用到一次性执行: 单例 单例: 就是在程序运行期间,只有一个实例化对象 ---- 举例:音乐播放器的App…一次执行 dispatch_once: 对应的代码只执行一次 , 并且它是线程安全的, 系统会自动这个函数加锁,保存同一时间只有一个线程去执行任务, 实现真正意义的一次性执行 什么时候需要用到一次性执行: 单例 单例: 就是在程序运行期间,只有一个实例化对象 ---- 举例:音乐播放器的App, 同时只能播放一首歌曲. 好处: 如果不使用同一个播放管理器对象, 那就播放下一首歌曲时, 先销毁上一个对象, 再创建一个新对象 这样做就比较消耗资源. 既然同一个时刻只能播放一首歌曲 ,所以我们只要一个播放管理者实例就可以了, 当播放下一首歌曲的时候,直接用这个对象把上一首歌移除, 播放这一首就可以了. static id _instance;
//单例的实现(instancetype)sharedMusicManager{if (_instance){return _instance;}_instance [[self alloc] init];return _instance;}//[alloc] init 方法会调用 allocWithZone(instancetype)allocWithZone:(struct _NSZone *)zone{static dispatch_once_t onceToken;//系统提供的, 官方建议实现单例就用这种方式//dispatch_once 这个方法是线程安全dispatch_once(onceToken, ^{_instance [super allocWithZone:zone];});return _instance;
} 转载于:https://www.cnblogs.com/thinkToShare/p/5642109.html