iOS7和Apple Watch

16

我有一个最低目标iOS7的应用程序。

我考虑增加一些额外的功能,让它支持Apple Watch。如果应用程序在iOS 8上运行,是否有任何选项可以保留iOS 7作为最低目标并仍然添加对Apple Watch的支持?类似于iOS8的扩展/小部件。

谢谢提前

3个回答

12
你可以将部署目标设置为iOS7.x,并确保使用iOS8.2 SDK进行构建。您需要在构建设置中将框架设置为可选(弱链接),并执行运行时检查以确保您不会在iOS7.x设备上尝试任何操作。
在未链接框架的应用程序中,可选框架将解析为nil

感谢Transis的帮助。只有一个疑问,如何验证导入? - DaSilva
什么叫做验证导入? - Tim
我有一个类只兼容iOS8。所以当应用程序运行时,我会验证该类是否存在“if ([Example class])”。应该添加导入(#import Example.h),这样当我在iOS7上运行时不会出现错误,因为该类不可用。 - DaSilva
2
它仍将编译,因为您将构建针对8.x SDK,但是当应用程序在最低部署目标上运行时,任何属于未链接框架的类都将被视为nil,并且在Objective-c中向nil发送消息是完全有效的。在许多情况下,您甚至不需要添加if([Example class]),因为它将解析为nil。只需确保不要向不响应它们的对象发送任何选择器,例如当新API在iOS7和8中的现有框架中添加时。希望这可以帮助到您。 - Tim
问题在于嵌入式库(用于watchApp)无法进行弱链接。因此它不会起作用。有没有什么解决方法? - Idan

3

是的,通过弱链接 WatchKit 并在需要时执行运行时检查,这是可能的。在Raywenderlich上查看。


4
无论是WatchKit还是任何其他新的API都没有关系。弱链接 + 运行时检查可以让OP实现WatchKit API,同时将iOS7作为基础版本。 - Andrew
@Andrew 我承认我错了,你是对的。我假设 respondsToSelector 会失败。好主意。 - JAL

0
在我的情况下,我所要做的唯一事情就是使用Objective-C创建扩展(某些iOS版本不允许使用Swift),并将扩展应用程序目标版本从8.3降级到8.2。

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