`

iOS 回到主线程的宏定义用法

    博客分类:
  • ios
 
阅读更多

在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:^{
                     
                 }];
             });
         }
    }];

 

分享到:
评论

相关推荐

    ios-iOS 开发 - 常用宏定义大全.zip

    定义了一些常用的宏,写代码的时候用起来挺方便的,添加了pch文件,设置了相对路径;设置pch文件相对路径的方法: 设置PCH的相对路径 要想设置PCH的相对路径,首先我们需要去查看绝对路径。 相对路径 点击PCH...

    iOS开发常用宏定义

    iOS开发常用宏定义 提高代码重用性

    iOS 宏定义

    iOS 开发常用的宏定义大全

    iOS常用宏定义framework

    "iOS常用宏定义framework" 提供了一系列预定义的宏和常用类别方法,旨在提高开发效率并简化代码。下面我们将深入探讨这个框架中的关键知识点。 1. **宏定义(Macro Definitions)**: - 宏定义是C语言的一种预...

    ios颜色屏幕版本切圆边框宏定义

    #pragma mark - UIColor宏定义 #pragma mark - 屏幕适配 #pragma mark - IOS版本信息 #pragma mark - 切圆 #pragma mark - 边框

    iOS中常用的宏定义总结

    在iOS开发中,宏定义(Macro Definitions)是预处理器(Preprocessor)的一种...这些宏定义在iOS开发中广泛使用,能够帮助开发者编写简洁、高效的代码。通过合理地运用宏,可以在保证代码质量的同时,提高开发效率。

    ios - A-常用宏定义

    //NavBar高度 #define NavigationBar_HEIGHT 44 //获取屏幕 宽度、高度 #define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width) #define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height) ...

    子线程更新主线程数据

    通过使用`dispatch_async`异步执行任务,配合`dispatch_get_main_queue()`获取主线程的队列,可以确保代码在主线程上执行。 - NSOperationQueue是另一种处理并发的方式,可以设置最大并发数量,支持依赖关系等。...

    有关主线程和子线程

    - 在主线程中使用定时器,可以实现周期性的任务调度。例如,使用`NSTimer`的`+scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:`方法。 ```objective-c [NSTimer ...

    iOS开发中常用的一些宏定义.zip

    在iOS开发过程中,宏定义(Macro Definitions)是Objective-C编程中一种常见的技术,它允许开发者在编译时进行代码替换,提高代码的可读性和可维护性。`Macro-master`这个压缩包文件很可能是包含了一些常用的宏定义...

    Ios子线程渲染Opengl demo

    "Ios子线程渲染Opengl demo"是一个实例项目,展示了如何在iOS应用中将OpenGL渲染过程移到子线程,以避免阻塞主线程,提高用户体验。在iOS中,主线程主要负责处理用户交互和UI更新,因此保持主线程的流畅至关重要。当...

    YCDefine, iOS项目中常用到的宏整理,使用方便快捷。.zip

    在iOS开发中,宏定义(Macro Definitions)是Objective-C编程中一种常见的技术,它允许开发者预定义代码片段,提高代码的可读性和可维护性。`YCDefine` 是一个开源项目,专门收集并整理了iOS项目中常用的宏定义,...

    iOS开发工具类汇总,包含各种常用功能,用简单的宏定义使iOS开发简单、快捷、高效.zip

    这个压缩包“iOS开发工具类汇总”显然提供了一组实用的宏定义,旨在简化iOS应用程序的开发过程,提高开发效率。其中包含的“CoreEditText-master”可能是一个专门针对文本编辑的工具库。 `CoreEditText-master`很...

    OC-主线程阻塞模拟效果:

    在iOS和macOS开发中,Objective-C(OC)是主要的编程语言之一,而主线程在应用程序中扮演着至关重要的角色。主线程负责处理用户交互、UI更新以及事件响应。当主线程被阻塞时,应用程序的性能和用户体验可能会显著...

    谈谈为何iOS开发别用宏来定义常量

    本文将详细解释为什么不应在iOS开发中使用宏定义常量,并介绍更安全、更规范的替代方案。 首先,宏定义并不是真正的常量,而是预处理器指令。这意味着在编译阶段,宏会被其定义的内容替换,可能导致意外的结果。...

    ios GSD_ZHIFUBAO

    在iOS开发领域,支付宝SDK(Alipay SDK)的集成是一个常见的需求,特别是在电子商务应用中,以便用户能够方便地进行支付操作。"ios GSD_ZHIFUBAO"这个项目是针对iOS平台的一个支付宝Demo,主要展示了如何在iOS应用中...

    swift-ODUIThreadGuard一个保安帮助你检查做UI更改是否不在主线程上

    在`Swift`开发中,我们可以使用`DispatchQueue.main.isRunLoopActive`或者`Thread.isMainThread`来判断当前代码是否运行在主线程。`ODUIThreadGuard` 将这些判断逻辑封装起来,并在检测到不合规的UI操作时抛出易于...

Global site tag (gtag.js) - Google Analytics