【问题标题】:Cocoa - Pause a methodCocoa - 暂停一个方法
【发布时间】:2011-06-06 05:56:51
【问题描述】:

如何在不冻结 UI 的情况下暂停方法,然后在被告知时继续该过程?

谢谢,

凯文

【问题讨论】:

标签: objective-c cocoa methods


【解决方案1】:

没有办法中断任意方法的执行,然后再继续执行。

您可以将您的方法分成多个部分,这些部分代表您希望能够在其间暂停的工作单元。然后,您可以使用计时器(NSTimers 或 [NSObject performSelector:withObject:afterDelay:] 用于特定的暂停间隔。

更多关于您正在尝试做的事情的信息可能会在此处提供一些更具体有用的建议。

【讨论】:

    【解决方案2】:

    有一种方法可以防止 UI 停止,例如。计时器。这或多或少是我们有运行循环的全部原因(嗯,这不是真的,但在你的情况下是这样)。

    只需将其插入您的函数中,一切都会正常工作:

    while(pauseFunction)
    {
        [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1f]];
    }
    

    备注:使用 runloop 安排的所有内容都会继续运行,这是 UI、计时器、网络等。pp。

    【讨论】:

    • @Kevin:如果你想暂停函数,它必须评估为真,一旦函数取消暂停,它需要评估回假。
    • NSRunLoop 有什么用?这会阻止 UI 冻结吗?
    • @Kevin:阅读有关 NSRunLoop 的文档,评论太多了,而且它有很多用例,无论如何你都应该阅读它为未来做好准备。
    • 好的,我已将您的代码输入到我的应用程序中,但 UI 仍然无法正常工作。我可以移动它,但我什至无法单击一个按钮。
    猜你喜欢
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多