我找到了下面的代码片段,它允许从任何后台线程在主线程上发布NSNotification.我想知道这是否安全和可以接受的做法?

dispatch_async(dispatch_get_main_queue(),^{
    [[NSNotificationCenter defaultCenter] postNotificationName:@"ImageRetrieved" 
                                                        object:nil 
                                                      userInfo:imageDict];
});

推荐答案

Yes you can美元.

通常,您希望在主服务器上发送NSNotify,特别是在它们触发UI活动(如取消模式登录对话框)的情况下.

Delivering Notifications To Particular Threads

常规通知中心在线程中传递通知 通知是贴在哪里的.分布式通知中心 在主线程上传递通知.有时,您可能需要 要在特定线程上传递的通知,该线程 由您决定,而不是通知中心.例如,如果 在后台线程中运行的对象正在侦听 来自用户界面的通知,例如窗口关闭,您可以 希望在后台线程中接收通知 而不是主线.在这些情况下,您必须捕获 在默认线程上传递并重定向的通知 将它们添加到适当的线程.

Ios相关问答推荐

缺少预期的键:';NSPrival yCollectedDataTypes';

如果条件不满足,S从@ViewBuilder返回什么?

我应该使用哪个UIButton发送事件在SWIFT上刷卡?

有没有办法将滚动视图RTL(阿拉伯语)与Ltr动画一起使用?

JSON响应中的键有时为Int,有时为字符串

在flatter_riverpod中,如果没有ref对象,我们如何访问提供程序?

在 iOS 上以后台模式安排任务(屏幕时间 API)

Swift - 缺少函数参数在编译期间不会失败,甚至会导致不同的数据类型?

由于缺少 libarclite_iphonesimulator.a 文件,将 XCode 升级到 14.3 后无法在模拟器上运行 Flutter 应用程序

在 SwiftUI 中使用 .rotation3DEffect 在视图之间翻转

Xcode 14 需要为 Pod Bundles Select 开发团队

通过 tuist/XcodeProj 以编程方式将文件添加到本机目标

在 Swift 中为 UITextField/UIView 摇动动画

实现一个将块用作回调的方法

Swift tableView 分页

在 Swift 中追加字符串

Xcode 10.2 无法在 iOS < 10 的模拟器上运行应用程序

AFNetworking 2.0 向 GET 请求添加标头

Swift:如何在设备旋转后刷新 UICollectionView 布局

请在您的 Podfile 中为此目标指定一个平台?