【问题标题】:Should I call NSSavePanel runModal method only from main thread?我应该只从主线程调用 NSSavePanel runModal 方法吗?
【发布时间】:2011-10-11 22:51:03
【问题描述】:

我的应用程序中出现了奇怪但罕见的崩溃。

我怀疑这是因为NSSavePanel 中的runModal 在与主线程不同的线程中被调用。

我是否正确,这可能是导致崩溃的原因?

【问题讨论】:

    标签: objective-c cocoa macos nssavepanel


    【解决方案1】:

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

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

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

    NSSavePanel 是 NSWindow 的后代。

    【讨论】:

      【解决方案2】:

      是的。

      我在错误的线程上调用runModal 时发生了崩溃。 performSelectorOnMainThread 通常有助于解决此问题。

      【讨论】:

      【解决方案3】:

      作为一般规则,所有对 UI 元素的访问都应从主线程(有时也称为 UI 线程)进行。

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

      这是否是您的崩溃的根源很难说。我的经验告诉我,崩溃可能是由各种各样的事情引起的......

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-21
        • 2020-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-18
        • 1970-01-01
        相关资源
        最近更新 更多