可以实现我部署的操作系统版本中不可用的协议吗?

时间:2013-09-18 16:08:25

标签: objective-c

假设我正在编写一个可在iOS7和iOS6上运行的应用程序。我有一个实现协议的类 - 一个仅在iOS7中可用的协议(在本例中为NSLayoutManagerDelegate)。

一切似乎都适用于iOS6 - 我的代码实例化了实现协议的类在iOS6上被跳过 - 所以看起来我很高兴。

虽然在应用程序加载期间没有看到错误,但我有点惊讶;显然,加载器可以实现一个不存在的协议。幸运的是我!

是否有讨论此方案的Apple文档?安全吗?我应该注意哪些问题?

1 个答案:

答案 0 :(得分:2)

没问题,有点像实现只为系统调用某个版本的方法。

在最坏的情况下,你可以说你已经生成了一些占用空间的代码(“磁盘”,如果你可以在iOS上调用它,可能还有RAM)而不用在旧版本上,但是这是最小的。

这一切都要求使用包含相关协议的SDK编译代码 - 如果使用<ProtocolName>构造声明符合协议并包含相应的头。但这是一种给定的,因为它不会编译。