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

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

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

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

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

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

作为一般规则,在iOS中一次只能有一个用户进程处于活动状态 – 例如,后台处理基本上是基于事件的。 所以你不能为自己创建第二个过程。

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

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

    (a)与应用相关联的customURL方案(上面提到的Tommy) (如果有的话)以启动应用并将一些参数发送到启动应用

    (b)如果您控制通信应用程序, 则可以使用消息端口(CFMessagePortCreateRemote)

    (c)如果您控制通信应用程序,则可以将Darwin NOtification中心用于分布式应用程序。

    当然,对(b)和(c)的期望是通信应用程序都在运行。 在iOS上,因为只有一个前台进程,你必须将另一个作为后台应用程序,并且仅限于iOS平台上的某些类型的应用程序。

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