我很奇怪,虽然很少见,但在我的应用程序中崩溃。我应该只从主线程调用NSSavePanel runModal方法吗?
我怀疑这是因为NSSavePanel
的runModal
在与主线程不同的线程中被调用。
我是否正确,它可能是崩溃的原因?
我很奇怪,虽然很少见,但在我的应用程序中崩溃。我应该只从主线程调用NSSavePanel runModal方法吗?
我怀疑这是因为NSSavePanel
的runModal
在与主线程不同的线程中被调用。
我是否正确,它可能是崩溃的原因?
作为一般规则,所有对UI元素的访问应该发生在主线程中,有时也称为UI线程。
所以我会说是的,你应该从主线程打开它。
至于这是否是你的崩溃的来源很难说。我的微薄经验告诉我,崩溃,可以通过各种各样的东西造成的......
请参阅从苹果的线程编程指南:
“线程安全类: NSWindow和所有的它的后代。“
NSSavePanel是NSWindow的后代。
是的。
我有错误的线程调用runModal
崩溃。 performSelectorOnMainThread
通常可以解决这个问题。
'performSelectorOnMainThread'在桌面osx上工作吗?我无法在文档中的任何地方找到它,你知道它在哪里吗?谢谢! – Noitidart
有段时间没有在OSX上工作过,但也许是这样?:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/#//apple_ref/occ/instm/NSObject/performSelectorOnMainThread:withObject:waitUntilDone: –
谢谢彼得! :) – Noitidart