gpt4 book ai didi

cocoa - 当 runloop 事件处理完成后,我该怎么做?

转载 作者:行者123 更新时间:2023-12-03 17:07:50 24 4
gpt4 key购买 nike

我的 Cocoa 应用程序中有一些处理,有时最终会调用数据层次结构来完成一系列工作作为事件的结果。每个小块都会创造和破坏一些资源。我不希望这些资源大部分时间都在身边,但我想找到一种聪明的方法来在所有工作之前创建它们并在最后杀死它们。

如果无法从“父级”或其他地方全局使用这些缓冲区等,有没有办法在某些代码中本地了解事件循环运行何时结束?然后,如果它们不存在,我可以创建它们,并保留它们直到运行循环结束,并在该时间之前将它们重新用于任何后续调用。

编辑:我不是在寻找有关如何重组我的代码的建议,无论如何我都可以这样做。这个问题给我带来了如何知道运行循环何时完成的问题。如果我用 Javascript 编写,我不知道,我会使用为零的 setTimeout 来完成结束事件清理。我想间隔为零的 NSTimer 也可以实现这一点,但想知道是否有更干净的东西。

谢谢。

最佳答案

既然你说“Cocoa”和“NSRunLoop”,我就假设你使用的是 Mac OS X。只要你使用的是 Snow Leopard,你就可以使用 Grand Central Dispatch 非常优雅地解决此类问题.

如果在 Leopard 或更高版本(或 iPhone)上,您可以使用 NSOperations 执行相同的操作(代码稍多)。

所有这些都在 Concurrency Programming Guide 中讨论。 .

即使您的算法不是设计为在主线程之外执行(在主事件循环之外),您仍然可以通过以下方式解决“稍后”调度内容的问题,以串行执行主队列。

关于cocoa - 当 runloop 事件处理完成后,我该怎么做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3030332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com