刚才稍微的看了一下,发现苹果的Extension介绍后面有一张图可以很好的解释这个问题:

iOS 8 的应用插件工作方式是如何跟 sandbox 沙盒保护机制共存的?插图

从上图,我们可以发现,Extension实际上是App里面的一个组件,但是Extension比App本身具有更强的扩展性(可以被其他Host App调用)

我们可以把Extension和Containing App给完全的分成两个App来看待,这两个App有着自己的方法声明和独有的量创建方式,他们在运行的时候更是有自己独立的process。只不过,Extension和Containing App可以共享一个双方都可以使用的Optional shared container。

这样拆解来看之后,我们再来思考Sandbox机制在这种Apps环境下的地位,便可以得到如下结论:

  1. Extension和Containing App处于两个不同的Sandbox内(或者类似的状态)
  2. Extension和Containing App的Sandboxes有一定的重合(Optional shared container)
  3. Extension所在的Sandbox比Containing App所在的Sandbox有更强的扩展性(可以被Host App调用)

说白了,就是苹果给了包含Extension的App准备了一个新的沙盒,这个沙盒和原来有部分交集,拥有更强的扩展性,但是也有更多的限制。

以上仅为一家之言,如有错误,还请各位iOS大神不惜赐教
=======体内酒精含量:0.4%========
稍微评价一下苹果给的这个方案:这简直是让独立开发者一个人写两个程序……想累死我们是么?!信不信我把App售价翻倍!

— 完 —

本文作者:Bill Cheng

【知乎日报】
你都看到这啦,快来点我嘛 Σ(▼□▼メ)

此问题还有 2 个回答,查看全部。
延伸阅读:
iOS 7 的后台多任务 (multitasking) 对比之前有何不同,具体机制是什么?会带来什么变化?
苹果为什么开始拒绝 iOS 应用获取设备的 UDID ?之前为什么允许?

分享到