我应该只从主线程调用NSSavePanel runModal方法吗?

时间:2011-07-24 08:15:14

标签: objective-c cocoa macos nssavepanel

我的应用程序中有很多奇怪但很少见的崩溃。

我怀疑是因为runModal的{​​{1}}在与主线程不同的线程中被调用。

我是否认为它可能是导致崩溃的原因?

3 个答案:

答案 0 :(得分:1)

请参阅Apple的“线程编程指南”:

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Multithreading/Introduction/Introduction.html

“线程不安全的类: NSWindow及其所有后代。“

NSSavePanel是NSWindow的后代。

答案 1 :(得分:1)

我在错误的帖子上发生了runModal的崩溃。 performSelectorOnMainThread通常可用来解决此问题。

答案 2 :(得分:0)

作为一般规则,对UI元素的所有访问都应该从主线程发生,有时也称为UI线程。

所以我说是的,你应该从主线程中打开它。

关于这是否是你的崩溃的来源很难说。我的谦虚经验告诉我,崩溃可能是由各种各样的事情造成的......