假设我正在编写一个可在iOS7和iOS6上运行的应用程序。我有一个实现协议的类 - 一个仅在iOS7中可用的协议(在本例中为NSLayoutManagerDelegate)。
一切似乎都适用于iOS6 - 我的代码实例化了实现协议的类在iOS6上被跳过 - 所以看起来我很高兴。
虽然在应用程序加载期间没有看到错误,但我有点惊讶;显然,加载器可以实现一个不存在的协议。幸运的是我!
是否有讨论此方案的Apple文档?安全吗?我应该注意哪些问题?
答案 0 :(得分:2)
没问题,有点像实现只为系统调用某个版本的方法。
在最坏的情况下,你可以说你已经生成了一些占用空间的代码(“磁盘”,如果你可以在iOS上调用它,可能还有RAM)而不用在旧版本上,但是这是最小的。
这一切都要求使用包含相关协议的SDK编译代码 - 如果使用<ProtocolName>
构造声明符合协议并包含相应的头。但这是一种给定的,因为它不会编译。