iOS是否与DLL / IPC /进程产生有任何等价物?

时间:2011-12-15 21:14:25

标签: ios

  1. 单独的应用程序是否能够以DLL的形式共享相同的二进制文件?我知道它可以编译静态库,但我不会将它们视为与DLL相同(即dll是多个应用程序共享的二进制文件的一个副本,而静态库由任何使用的应用程序单独包含)。 p>

  2. 每个应用程序是否完全相互独立,是否有任何IPC或文件共享机制可供不同的应用程序进行通信和共享数据?

  3. 除了新主题之外,应用程序是否可以创建新进程(我猜不是)?

3 个答案:

答案 0 :(得分:4)

您无法在应用程序之间共享可执行文件。 Apple要求所有应用程序独立运行。但是,您可以使用UIDocumentInteractionController来获取另一个程序来处理您不理解的文件,并且可以使用“快速查看”。例如,这就是Mail的工作方式。

来自同一供应商的程序可以共享钥匙串,我认为,iCloud存储从iOS 5开始,但无法在磁盘上共享存储。由于它们可以声明支持的文件类型,因此可以使用UIDocumentInteractionController将文件的临时访问从一个应用程序推送到另一个应用程序。如果有帮助,可以以类似的方式使用自定义URL方案来传递数据片段。

作为一般规则,iOS中只能同时激活一个用户进程 - 例如后台处理基本上是基于事件的。因此,您无法为自己创建第二个流程。

答案 1 :(得分:4)

  1. 如果你正在为越狱手机开发,你可以这样做。不 在越狱手机上,你可以创建.dylibs或共享库 通过DYLD_INSERT_LIBRARIES环境var加载(非常类似于on 的MacOS)

  2. 应用程序是沙盒。但是,有一些方法可以在应用程序之间进行通信。你可以使用

    (a)customURL scheme (also mentioned by Tommy above)     (如果有的话)与应用程序关联以启动应用程序并发送一些应用程序     启动应用程序的参数

    (b)如果您控制沟通     应用,then you can use Message ports (CFMessagePortCreateRemote)

    (c)如果您控制通信应用,you could use Darwin NOtification center for distributed apps.

    当然,对(b)和(c)的期望是 沟通的应用程序都在运行。在iOS上,因为只有一个前景 过程中,你必须将另一个作为后台应用程序,那就是 限制在iOS平台上的某些类型的应用程序。

答案 2 :(得分:1)

基本上,上述所有情况都没有,除非你的目标是越狱手机并绕过Apple的App Store。如果你越狱,我相信你有类似Mac OS X中的选项。