您的位置:首页 > 移动开发 > IOS开发

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

2016-01-19 09:24 351 查看
有些时候,我们只希望某些操作只执行一次。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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息