我的应用程序是根据iOS 11 SDK构建的,但是部署目标设置为9.3。因此,该应用程序已构建,但如果我没有看到有使用仅在iOS 11(或高于9的版本)上可用的方法的代码,而我在iOS 9上运行该应用程序,则会崩溃。因此,有没有办法使所有代码与特定版本的iOS不兼容?
答案 0 :(得分:1)
**编辑:仔细阅读标题后的新答案。
Xamarin iOS似乎没有为部署目标自动定义任何内容。
如果必须在编译时执行此操作,则可以 在编译器设置中定义自己的符号。例如,您可以定义IS_IOS_10_OR_GREATER,然后针对不同的项目进行更改。
Xamarin的官方建议是在运行时确定,因为您所运行的iOS版本决定了功能。您可以使用以下代码来使用条件:
UIDevice.CurrentDevice.CheckSystemVersion(11, 0)
UIDevice.CurrentDevice.SystemVersion
另一个选择是创建一个接口,并根据上述方法调用具有不同的实现,然后相应地选择哪个实现。 Ioc将对此非常有用。