gpt4 book ai didi

objective-c - CFRunLoopRun 在 NSThread 中立即返回

转载 作者:行者123 更新时间:2023-12-03 17:02:31 25 4
gpt4 key购买 nike

我有客观的 C 代码,我从 C++ 应用程序调用它。在那个 Objective-C 代码中,当我刚刚运行 CFRunLoopRun() 时,它会停止并在那里循环,但是当我创建新的

 NSThread* evtThread = [ [NSThread alloc] initWithTarget:self
selector:@selector( saySomething )
object:nil ];

[ evtThread start ];

并在那里运行CFRunLoopRun(),它会立即返回。

怎么了?

结果我需要一些输入源,所以我想在非主线程中运行该循环并在那里获取通知,我该怎么做?

已添加

 NSRunLoop *q = [NSRunLoop currentRunLoop];
[q addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode];

在CFRunLoopRun之前,现在它循环但没有收到 sleep 通知。顺便说一句,如果我从主线程调用它,我会收到 sleep 通知。

最佳答案

请注意 CFRunLoopRun() 文档的最后一句话:

“当前线程的运行循环在默认模式下运行(请参阅默认运行循环模式),直到使用 CFRunLoopStop 停止运行循环或从默认运行循环模式中删除所有源和计时器。”

从您的评论来看,您似乎要求新线程中的运行循环运行,但实际上并没有给它任何操作。

关于objective-c - CFRunLoopRun 在 NSThread 中立即返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27620048/

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