- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 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/
我正在尝试获取一个使用 GCDAsyncSocket 的简单示例,并且发现我缺少某些理解,希望各位好心人可以帮助解释这一点。 我已经设置了下面的 GCDAsyncSocket 内容: dispatch
实际上什么是运行循环? 与线程有什么区别? 哪些地方必须使用 run loop 哪些地方不需要? 最佳答案 RunLoop 是一种循环机制。这是一种无限循环。 Thread是代码执行(线程)的概念模型
我想显示一个 UICollectionView 但我在加载图像时遇到问题。 AlAssetsLibrary 不会返回到运行循环。 我得到的输出为 2013-04-12 11:36:25.429 Fil
我正在尝试创建一个自定义运行循环,它基本上以 FIFO 顺序运行任务,并提供三个 API:addTask(Task task)、run() 和 exit() 任务界面 public interface
所以,我有一个计时器,它每 0.1 秒将我的应用程序委托(delegate)中的变量加一。在我的 tableViewController 中,我将此数字显示在单元格中。在 Controller 中,有
我有一台 iPod Touch 第 2 代,我正在尝试使用照片名称从资源库中检索照片。我在设备上运行了恢复以确保它是出厂版本 4.1。 我的头文件有: #import { BOOL fetc
我目前正在为我的项目做一个 FTP 客户端。我已经安排了带有runloop的readstream/writeStream来从硬盘读取文件/将文件写入硬盘并将其发送到服务器。上传和下载文件后,我取消了运
我正在寻找类似于的行为 [[NSNotificationQueue defaultQueue] enqueueNotification:not postingStyle:NSPostWhenIdle
所以我们的应用程序在 SocketRocket 中已经经历了一段时间的崩溃。我们每天从中得到大约 20 次崩溃,堆栈跟踪如下: Crashed: com.apple.root.default-over
iOS 上的操作顺序是什么? 我正在特别考虑时间安排 setNeedsLayout 和 layoutSubviews setNeedsDisplay 和 drawRect 触摸识别 [NSTimer
在 Swift 应用程序中,我使用了计时器。我不希望在创建 Timer 并将其插入 Runloop 后保留对 Timer 的引用。我希望能够使它无效。有没有办法在不保留引用的情况下做到这一点? 最佳答
IOS中的进程和线程 通长来说一个app就是一个进程 ios开发中较少的运用进程间的通信(XPC),绝大多数使用线程。 在ios开发中,为了保证流畅性以及线程安全,所有与UI相关的操作都应该放在主
我在使用dispatch_async 时遇到一些问题。在我的应用程序主/UI 线程上,我在全局队列上调用dispatch_async,并告诉它执行一些具有完成处理程序的函数调用。我期望完成处理程序被调
我的 Cocoa 应用程序中有一些处理,有时最终会调用数据层次结构来完成一系列工作作为事件的结果。每个小块都会创造和破坏一些资源。我不希望这些资源大部分时间都在身边,但我想找到一种聪明的方法来在所有工
在我的应用程序中,我将一个CFMachPortRef(通过CFMachPortCreateRunLoopSource)添加到线程CFRunLoop 现在我问自己,这可以使用 GCD 来完成吗?假设不是
我正在编写一个基础工具。我必须进行线程来区分不同的正在进行的任务。 我尝试进行线程处理,但它不断崩溃。最后我找到了原因,我需要运行自己的运行循环。 有人可以帮忙举一些简单的例子吗?我尝试了以下代码,但
每个Thread都有自己的RunLoop,DispatchQueue如何与它们交互? DispatchQueue 是使用 RunLoop 将任务分派(dispatch)到 Thread 还是通过其他方
我正在编写一个 iPad 应用程序,但遇到了 UI 响应/锁定问题。 我有一个带有项目的UITableView,当单击某个项目时,它会在互联网上显示并获取该项目并显示它。程序的其余部分(未显示)将使用
我试图让这个 runloop 永远运行(如果不是永远至少一天的话)我正在为 runloop 使用以下函数 [self.runLoop runUntilDate:[NSDate dateWithTime
我的要求是我想每 6 秒调用一个 API 从我的服务器请求一些新信息,所以我编写了如下代码: MyBackgroundThread(){ while(self.isStop){
我是一名优秀的程序员,十分优秀!