簡(jiǎn)單介紹
1你雌、gcd相關(guān)簡(jiǎn)單用法器联;內(nèi)容簡(jiǎn)單二汛,牛繞行!
2拨拓、方法直出肴颊,不涉及過(guò)多理論東西;如需理論渣磷,自行百度婿着;
3、文章持續(xù)更新相關(guān)內(nèi)容醋界,建議點(diǎn)贊收藏竟宋;
.h
/*
簡(jiǎn)單的異步線程
dispatch_get_global_queue 系統(tǒng)默認(rèn)的全局隊(duì)列
DISPATCH_QUEUE_PRIORITY_DEFAULT默認(rèn)級(jí)別
flag 0 保留參數(shù)
*/
+ (void)async:(void(^)(void))block;
/*
主線程 如果使用dispatch_sync將造成死鎖
dispatch_get_main_queue 系統(tǒng)默認(rèn)的主線程隊(duì)列
除此之外,還有自定義隊(duì)列
*/
+ (void)main:(void(^)(void))block;
/*
延遲后執(zhí)行
執(zhí)行后回到主線程
*/
+ (void)delay:(void(^)(void))block;
/*
延遲后執(zhí)行
執(zhí)行后回到主線程
*/
+ (void)delay:(NSInteger)time block:(void(^)(void))block;
備注
1形纺、這里提供一個(gè)define丘侠,方便使用
#define gcd DKGCD
.m
關(guān)于方法的備注,在m中不再做相關(guān)注釋逐样。
+ (void)async:(void(^)(void))block {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
if (block) {
block();
}
});
}
+ (void)main:(void(^)(void))block {
dispatch_async(dispatch_get_main_queue(), ^{
if (block) {
block();
}
});
}
+ (void)delay:(void(^)(void))block {
[gcd delay:0 block:block];
}
+ (void)delay:(NSInteger)time block:(void(^)(void))block {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(time * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[gcd main:^{
if (block) {
block();
}
}];
});
}
一般使用方法
1蜗字、需要注意block的使用,防止內(nèi)存無(wú)法使用問(wèn)題脂新;
__weak TestViewController *weakSelf = self;
[gcd delay:3 block:^{
if (!weakSelf) {
NSLog(@"主體不存在");
return;
}
NSLog(@"delay");
}];
IMG_2921.JPG