【发布时间】:2015-03-06 04:10:29
【问题描述】:
使用 CFMessagePortCreateLocal 创建本地端口时,您可以指定上下文信息 (void *)。这对于指向 Objective-C 类实例很有用。使用 CFMessagePortCreateRemote 您不能指定上下文信息。如果您希望通过 CFMessagePortSetInvalidationCallBack 指定的回调来监视远程端口何时失效,则回调中没有该信息。除了使用静态变量之外,还有其他解决方法吗?
我可能有未知数量的远程端口连接到不同的进程。
【问题讨论】:
-
您的回调获取端口的
CFMessagePortRef。您需要创建一个数据结构来跟踪您创建的远程消息端口并将其映射到其他相关数据。或者,由于所有CFType对象都免费桥接到NSObject和id,您也许可以使用关联的对象API(例如objc_setAssociatedObject())。 -
@KenThomases 请添加您的 objc_setAssociatedObject 建议作为答案,我会将其标记为已接受的答案。它似乎完全符合我的要求。
标签: cocoa core-foundation