gpt4 book ai didi

objective-c - 在 Cocoa 应用程序上调用 CFRunLoop 系列

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

我有一个 cocoa 应用程序,我想在其中使用 UNIX 域套接字与系统范围的守护进程进行通信。

第一步,我的客户端将连接到守护程序,然后监听来自守护程序的传入日志语句。

我发现的示例,来自 Apple 的 CFLocalServer,使用 CFSockets在两个命令行实用程序之间进行通信。我能够很好地设置代码的守护进程部分,因为我可以自由决定在守护进程中调用哪个函数( [[NSRunLoop currentLoop] run]CFRunLoopRun() )。不过,我对客户端有疑问,它是一个 cocoa 应用程序。

在代码示例中,客户端首先创建它们,连接,将它们作为源添加到当前 CFRunLoop进行监听操作,然后调用CFRunLoopRun();直到被 CFRunLoopStop(CFRunLoopGetCurrent()); 取消

我的问题是:我可以在 Objective-C cocoa 应用程序创建的串行调度队列上的 block 内完成所有这些操作,而不干扰应用程序主线程中的 NSRunLoop 吗?

最佳答案

是的,您可以这样做,尽管您可能只想将套接字附加到主运行循环并让它正常运行(即不要调用 CFRunLoopRun() 因为它已经在运行) .

我还会查看GCDAsyncSocket如果您的需求很复杂,那么这是所有此类工作的一个非常好的包装。它目前不支持 unix 域套接字,但您可以使用 jdiehl's socketUN branch添加它。

关于objective-c - 在 Cocoa 应用程序上调用 CFRunLoop 系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16306807/

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