Xcode 如何解决“NSAlert正在从后台线程使用,这是不安全的。”

Xcode 如何解决“NSAlert正在从后台线程使用,这是不安全的。”,xcode,multithreading,macos,Xcode,Multithreading,Macos,我正在使用NSalert显示弹出窗口。将要显示的数据从后台线程发送到动态警报。有时我发现弹出窗口为白色,为空。我发现日志NSAlert正在后台线程中使用,这是不安全的。那么运行NSAlert的最安全方法是什么呢?您可以在警报代码周围使用此块 调度\同步调度\获取\主队列,^{…} 或者,当您显示它时 self performSelectorOnMainThread 您可以在警报代码周围使用此块 调度\同步调度\获取\主队列,^{…} 或者,当您显示它时 self performSelector

我正在使用NSalert显示弹出窗口。将要显示的数据从后台线程发送到动态警报。有时我发现弹出窗口为白色,为空。我发现日志NSAlert正在后台线程中使用,这是不安全的。那么运行NSAlert的最安全方法是什么呢?您可以在警报代码周围使用此块

调度\同步调度\获取\主队列,^{…}

或者,当您显示它时

self performSelectorOnMainThread

您可以在警报代码周围使用此块

调度\同步调度\获取\主队列,^{…}

或者,当您显示它时

self performSelectorOnMainThread

显示来自主队列的警报我正在使用runmodal显示警报。然后,我应该使用PerformSelectoronMainthread运行它。那么我如何从中返回值呢?show alert from main queue我正在使用runmodal显示警报。然后,我应该使用PerformSelectoronMainthread运行它。那么我如何从中返回一个值呢?谢谢@Zil我可以从performselectornmainthread中运行的方法中获得一个返回值吗。由于我使用runmodal获取警报,我需要我的CALL的返回值。我不知道runmodal是什么,很抱歉。。。你需要知道用户按下了什么按钮吗??像OK、cancel或任何其他按钮,但如果我猜你可以用选择器调用另一个函数,它可以用参数处理警报,从那里你可以发送一个返回,你从警报中返回什么??或者调用另一个函数来完成所需的操作谢谢@Zil我可以从performSelectorOnMainThread中运行的方法获取返回值吗。由于我使用runmodal获取警报,我需要我的CALL的返回值。我不知道runmodal是什么,很抱歉。。。你需要知道用户按下了什么按钮吗??像OK、cancel或任何其他按钮,但如果我猜你可以用选择器调用另一个函数,它可以用参数处理警报,从那里你可以发送一个返回,你从警报中返回什么??或者调用另一个函数来满足您的需要