iSO 7为popover引入了一个新的API
setPopoverContentSize:animated:
而不是
contentSizeForViewInPopover
在iOS6和之前使用过。由于我使用iOS7 SDK不应该是第一个API重定向自己在iOS 6上使用旧版本。为什么我必须要用if替换一个调用,否则在代码中的iOS检测。
有没有办法为iOS版本使用一个API?
答案 0 :(得分:5)
有没有办法为iOS版本使用一个API?
是。 iOS 7中唯一明显的变化是contentSizeForViewInPopover
现已弃用。另一个电话-setPopoverContentSize:animated:
和相应的popoverContentSize
媒体资源have been available since iOS 3.2。
鉴于此,正确的方法是将代码更改为使用popoverContentSize
和-setPopoverContentSize:animated:
。您的代码在iOS 6中可以正常运行,并且您不必担心将来某个时候通过代码来删除仅支持iOS 6的代码。
答案 1 :(得分:3)
您仍然可以使用较旧的通话,直到您觉得您只需要支持iOS7。
iOS6无法知道新呼叫的含义,因此无法重定向。
答案 2 :(得分:0)
处理这种情况的最佳方法是使用较旧的API调用,就像每个人都在这里提到的那样。如果您的部署目标是6.x,您的应用程序将编译并构建,并且您很高兴。
如果您的目标不是iOS 7,则无需担心iOS 6/7支持。
话虽如此,如果将来你转向iOS 7的目标,开发人员应该负责处理向后兼容性,而不是SDK。 SDK无法对您的代码进行假设,并将已弃用的调用重定向到较新版本....它只是不能那样工作,而且这样的系统会遇到麻烦。
此外,在这种情况下,setPopoverContentSize:animated:不是iOS7独有的,并且支持iOS3.2,所以你很高兴。
答案 3 :(得分:-1)
这可能会有所帮助:
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
//code for iOS 6
} else {
//code for iOS 7
}
可能是一种痛苦,但这是我们现在能做的最好的事情。