- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 OSX 的 cocoa 应用程序中有以下代码:
void *callbackInfo = NULL; // could put stream-specific data here.
FSEventStreamRef stream;
CFAbsoluteTime latency = 1.0; /* Latency in seconds */
/* Create the stream, passing in a callback */
stream = FSEventStreamCreate(NULL,
&mycallback,
callbackInfo,
pathsToWatch,
kFSEventStreamEventIdSinceNow, /* Or a previous event ID */
latency,
kFSEventStreamCreateFlagFileEvents//kFSEventStreamCreateFlagNone /* Flags explained in reference */
);
/* Create the stream before calling this. */
FSEventStreamScheduleWithRunLoop(stream, CFRunLoopGetCurrent(),kCFRunLoopDefaultMode);
FSEventStreamStart(stream);
CFRunLoopRun();
}
此代码会收到有关文件系统更改的通知并做出相应 react (回调函数不在代码片段中)。
我现在的问题是 CFRunLoopRun() 正在阻塞。 IE。代码的进一步执行停止。但是,我正在寻找一种可能性,即我可以开始观察文件系统更改,但也可以再次停止它(例如从另一个对象)。
我想到的一个选择是仅启动循环一秒钟,然后检查全局变量。然而,我通常不喜欢全局变量......
这里有人有一个好用且方便的想法吗?如何解决这个问题?购买开销并将执行放入单独的线程中是个好主意吗?
提前致谢!诺伯特
最佳答案
CFRunLoopRun()
永远运行当前的运行循环,直到有人在运行循环中注册调用 CFRunLoopStop()
。这不是您想要做的,除非您正在做一些非常奇特的事情。
如果您想要运行FSEventStream
回调,您只需将其注册到runloop并保留它,之后您不必对runloop显式执行任何操作,注册偶数流作为来源就是您所要做的。
如果您想停止观察流,请对其调用FSEventStreamStop()
。
关于objective-c - 需要 CFRunLoopRun() 但希望它解除阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31765386/
我在当前运行循环上安排了一个 HIDManager,它是 main 函数的运行循环。 当我添加以下行时 CFRunLoopRun(); 所有的HID事件都会被捕获并输出到屏幕上,兼容Runloop模型
[self request]; //main thread - (void)request { [self performSelectorInBackground:@selector(regF
我刚刚制作了一个简单的测试应用程序来显示击键的键码和修饰符。它适用于 3 次击键,然后应用程序崩溃。当它崩溃时,调试控制台最后只显示 (LLDB) 。任何建议可能是什么原因造成的?也许与线程或指针有关
我每天都会收到很多关于 CFRunLoopRun 错误的崩溃报告。它出现在 Xcode 和 iTunes Connect 崩溃报告中。但是,我没有收到用户反馈的任何崩溃报告。但是我不知道错误代码在哪里
我有一个 NSRunLoop 对象,我将计时器和流附加到该对象。它工作得很好。停止它是另一个故事。 我使用 [runLoop run] 运行循环. 如果我尝试使用 CRunLoopStop([[NSR
我在 OSX 的 cocoa 应用程序中有以下代码: void *callbackInfo = NULL; // could put stream-specific data here.
我读过有关 CFRunLoop 的内容,但仍然对它有些困惑。我遇到了一段代码,我想自己澄清一下: NSMutableURLRequest *request = [[NSMutableURLReques
我有客观的 C 代码,我从 C++ 应用程序调用它。在那个 Objective-C 代码中,当我刚刚运行 CFRunLoopRun() 时,它会停止并在那里循环,但是当我创建新的 NSThread*
我正在学习 iOS runloop。网上的一些文章向我展示了这样的代码: - (void)memoryIssue { for (int i = 0; i < 10000; i++) {
当你意识到自己不知道发生了什么时那种沉沦的感觉...... 我已经在我的网络代码中使用此代码近两年了,没有出现任何问题。 if (!CFReadStreamOpen(myReadStream)) {
我是一名优秀的程序员,十分优秀!