1

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

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

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

是否有任何讨论这种情况的 Apple 文档?安全吗?我应该注意什么问题?

4

1 回答 1

2

没问题,有点像实现一个仅由系统调用的某些版本以上的方法。

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

这一切都要求使用包含相关协议的 SDK 编译代码 - 如果通过使用<ProtocolName>构造并包含相应的标头来声明与协议的一致性。但这是给定的,因为否则它不会编译。

于 2013-09-18T18:04:55.603 回答