我必须保留哪些与NSXPCConnection相关的对象?

时间:2015-03-20 09:07:40

标签: cocoa ipc xpc

我在关于对象生命周期管理的文档中找不到任何提示。

  1. 在XPC服务中,我是否必须强力引用NSXPCListener,或resume来电是否有效处理此问题?

    我使用Swift和连接创建对象从main.swift文件中获取大部分内容:

    // main.swift
    if let dependencies = Dependencies().setUp() {
        // Actually run the service code (and never return)
        NSRunLoop.currentRunLoop().run()
    }
    

    我预感到dependencies对象(在设置期间创建NSXPCListener)应该保持对侦听器对象的强引用。但据说resume方法就像操作队列一样工作。

  2. 相反,客户是否需要来保持NSXPCConnection

  3. 在XPC服务中,在传入连接时,设置exportedObject是否在连接期间保留该对象,或者我是否必须自己保持强烈的参考?

    < / LI>
  4. 因此:当有多个连接进入时,我应该保留exportedObject的列表吗?

  5. 在服务的客户端中,我应该获得remoteObjectProxy一次并保留它,还是应该为每次呼叫重新获得代理对象?

    我的部分XPC服务是一个一直运行的启动过程,而不是一次性的事情,客户端应用程序本身也可能在后台运行几个小时。我担心将代理对象保留在后台服务是否安全可能会导致长时间运行。

    如果后台服务崩溃,则说launchd重启它们。现在,如果我的服务是&#34;按需启动&#34;相反,服务代理对象的消息调用会在必要时发出重新启动,会获取代理对象吗,还是只会重新连接实现呢?

  6. 感谢您帮助我解决这个问题!

0 个答案:

没有答案