iOS 回到主线程的宏定义用法
程序员文章站
2022-05-29 08:28:54
...
在iOS开发中,有的时候会想在block回调中显示Tost弹框,但是,iOS系统不赞成在异步回调里操作UI,这个时候,有个宏定义方法可以利用判断直接回到主线程,使用代码如下:
宏定义代码
#define wy_dispatch_main_sync_safe(block)\ if ([NSThread isMainThread]) {\ block();\ } else {\ dispatch_sync(dispatch_get_main_queue(), block);\ }
使用示例
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{ // 写入图片到相册 PHAssetChangeRequest *req = [PHAssetChangeRequest creationRequestForAssetFromImage:image]; } completionHandler:^(BOOL success, NSError * _Nullable error) { NSLog(@"success = %d, error = %@", success, error); if(success) { tl_dispatch_main_sync_safe(^{ [WHToast showSuccessWithMessage:@"保存成功" duration:1 finishHandler:^{ }]; }); } }];
推荐阅读