如果您将应用程序设置为部署到早期版本,则最新的Xcode IDE要求您定位iPhone SDK 4,同时动态处理已弃用和新功能。
那么我可以使用像Blocks这样的新功能,还能在运行iPhone OS 3.0或3.1或3.1.3的设备上运行吗?
我还没有找到关于如何对以前的iPhone OS版本进行向后兼容的文档。如果你能指出我的官方文件,其中包括如何做到这一点,我会很感激。
答案 0 :(得分:4)
据我所知,块不会在3.2之前工作,因为不包括Blocks运行时(像__NSStackBlock__
这样的类或其他类)。除此之外,我的理解是,如果使用足够新的编译器,可以使用块编译代码。解决方案是在项目中有条件地包含自定义块运行时。
答案 1 :(得分:3)
虽然最简单的事情是尝试它,我认为它们不会造成伤害,如果存在但不使用(例如,你使用运行时if语句来使用前面的代码绕过块) 4.0设备),但它们肯定不会在4.0之前的设备上运行,并且Apple提供的使用块的所有API都将无法使用。总而言之,如果您有办法在没有块的情况下执行某些操作,则没有理由采用不同的方法来执行块 - 这只会增加冗余和重复代码 - 因此,如果您希望定位4.0之前的设备,你不应该使用块,但如果你想/需要使用块,不要以低于4.0的操作系统
为目标答案 2 :(得分:0)
使用预处理程序指令(http://developer.apple.com/iphone/library/documentation/xcode/conceptual/iphone_development/115-Configuring_Applications/configuring_applications.html)(如TARGET_OS_IPHONE)来使用不同iOS版本的代码。
答案 3 :(得分:0)
不,在没有PLBlocks的情况下,无法在3.2之前的iPhone上使用块 - 即便如此,无论采用哪种方法,块都可能不存在。