iOS 【Multithreading-GCD一次性代码及其在单例模式的应用】

来源:互联网 发布:现金贬值知乎 编辑:程序博客网 时间:2024/06/05 15:26

有些时候,我们只希望某些操作只执行一次。GCD可以帮助我们实现:

    static dispatch_once_t onceToken;    dispatch_once(&onceToken, ^{        <#code to be executed once#>    });

只需这段代码,然后将code写在大括号内就可以了。那么code就只会执行一次了。

内层执行原理:onceToken这个参数一开始是0,执行一次之后就变为了-1,且永远为-1。

这段代码是固定格式的,我们不必繁琐的敲出来,只需要按照Xcode的提示即可:


利用GCD的一次性代码去实现单例模式:

#import <Foundation/Foundation.h>@interface WZYTool : NSObject+ (instancetype)shareTool;@end

#import "WZYTool.h"@implementation WZYTool+ (instancetype)shareTool{    static WZYTool *_instance;        static dispatch_once_t onceToken;        dispatch_once(&onceToken, ^{        _instance = [[self alloc]init];    });        return _instance;}@end


2 0