【发布时间】:2011-10-11 22:51:03
【问题描述】:
我的应用程序中出现了奇怪但罕见的崩溃。
我怀疑这是因为NSSavePanel 中的runModal 在与主线程不同的线程中被调用。
我是否正确,这可能是导致崩溃的原因?
【问题讨论】:
标签: objective-c cocoa macos nssavepanel
我的应用程序中出现了奇怪但罕见的崩溃。
我怀疑这是因为NSSavePanel 中的runModal 在与主线程不同的线程中被调用。
我是否正确,这可能是导致崩溃的原因?
【问题讨论】:
标签: objective-c cocoa macos nssavepanel
请参阅 Apple 的线程编程指南:
“线程不安全的类: NSWindow 及其所有后代。”
NSSavePanel 是 NSWindow 的后代。
【讨论】:
是的。
我在错误的线程上调用runModal 时发生了崩溃。 performSelectorOnMainThread 通常有助于解决此问题。
【讨论】:
performSelectorOnMainThread 在桌面 osx 上工作吗?我在文档的任何地方都找不到它,你知道它在哪里吗?谢谢!
作为一般规则,所有对 UI 元素的访问都应从主线程(有时也称为 UI 线程)进行。
所以我会说是的,你应该从主线程打开它。
这是否是您的崩溃的根源很难说。我的经验告诉我,崩溃可能是由各种各样的事情引起的......
【讨论】: