为什么Xcode会为手表应用程序创建两个目标?

4
我刚接触WatchKit,并想为我的现有iOS应用程序开发Watch扩展。我之前在同一项目中开发过共享扩展,因此我对如何将扩展目标嵌入应用程序有一定了解。
然而,当我使用默认设置添加了一个Watch应用程序目标时,它创建了两个目标:WatchWatch Extension。我不太理解为什么会有这两个目标。Watch似乎默认具有非模型内容(例如资源、故事板),而Watch Extension则包含了我的实际代码(例如界面控制器)。为什么它们不是默认在一起的呢?将它们拆分的目的是什么,因为它们都将在Watch上同时运行?
2个回答

4

当第一代 Apple Watch 推出时,“Extension” 运行在手机上,“App” 包含 UI,运行在手表上。随着 Watch OS 2 的发布,两者都可以在手表上本地运行,但是目标仍然是分开的。希望很快我们就能够拥有一个目标。


2

虽然我不能说它们在构建依赖方面总是需要分开的目标,但它们在打包方面需要是不同的,因为应用程序和扩展程序并不总是一起运行。

与iOS类似,.watchkitapp.watchkitextension包是.watchkitapp包的一个独立组件。尽管手表应用程序确实需要应用程序扩展,但应用程序扩展可以在没有启动其应用程序的情况下在后台运行。手表甚至可能在前台显示完全不同的应用程序。

例如,如果应用程序扩展包括在手表表盘上显示的复杂功能,则该扩展将收到来自ClockKit的请求以唤醒。根据扩展属性列表中的信息,会实例化其复杂控制器以更新复杂服务器。这将独立于手表应用程序发生。除非用户碰巧点击了特定的手表表盘复杂功能,否则手表应用程序本身不会启动。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接