如何符合基于操作系统版本的协议?

时间:2016-08-06 08:11:48

标签: ios swift

在针对iOS 8.0及更高版本的应用中,我想在iOS 9.0及更高版本上使用SFSafariViewController,在旧设备上使用后备WebView控制器。

我需要那些View控制器符合协议protocol SomeWebViewProtocol

我可以直接为后备WebView控制器(extension FallBackViewController: SomeWebViewProtocol { ... })执行此操作,但是如何为SFSafariViewController执行此操作? if #available(iOS 9, *) { ... }不是一个选项,因为扩展名必须是文件级

1 个答案:

答案 0 :(得分:1)

以下示例应该足够了:

struct Foo
{

}

@available(iOS 9, *)
protocol Bar
{

}

@available(iOS 9, *)
extension Foo: Bar
{

}

只需将@available(iOS <version>, *)添加到声明的顶部即可。