【发布时间】:2015-04-04 16:37:21
【问题描述】:
我希望有人能对此有所了解。我已经尝试过研究,但实际上找不到任何东西......
有没有办法在 iPhone 应用程序和 Apple Watch 扩展之间共享一个类?
假设在手表扩展中我有一个课程myClass;我无法在电话应用程序中使用此类。有没有办法解决这个问题?
【问题讨论】:
我希望有人能对此有所了解。我已经尝试过研究,但实际上找不到任何东西......
有没有办法在 iPhone 应用程序和 Apple Watch 扩展之间共享一个类?
假设在手表扩展中我有一个课程myClass;我无法在电话应用程序中使用此类。有没有办法解决这个问题?
【问题讨论】:
有两种方法可以做到这一点。
使用您的共享代码创建一个框架,并将该框架链接到您的 WatchKit 扩展程序和您的 iPhone 应用程序。这是最干净且推荐的方式。
将 MyClass 的源文件(和依赖项)添加到您的 iPhone 和 WatchKit 扩展目标中。
【讨论】:
iPhone 应用程序和 Apple Watch 扩展程序在您的项目中基本上是不同的目标。对于每个文件(.h 文件除外),您可以指定要将其包含到哪个目标。
至少有两种方法可以做到这一点。
1) 从顶部菜单中选择查看 -> 实用程序 -> 文件检查器。右侧面板将显示,您应该会找到 Target Membership 部分,在您项目的可用目标旁边带有复选框。检查要包含此文件的目标。在这种情况下,iPhone 应用程序和 WatchKit 扩展程序。
2) 您也可以点击项目进入项目设置。 选择您想要的目标。 (即 iPhone 应用程序或 WatchKit 扩展程序),单击 Build Phases 选项卡。在编译源代码中,您可以单击“+”图标添加更多文件以构建目标。 (即 myClass.m 在您的情况下)
希望这会有所帮助!
【讨论】:
如果您希望在 Watch App Extension 中以 Swift 代码共享 iPhone 应用中的 Obj-C 类:
将您希望从 iPhone 应用程序共享的所有 .m 文件包含在 WatchKit 扩展应用的 Target(即在 Target Membership 中)。
创建一个桥接头(一个新的 .h 文件)文件(通常命名为 [项目名称]-Bridging-Header.h)。您可以选择将其命名为 [projectName]-Watch-Bridging-Header.h(或其他任何 合适)。
【讨论】: