为iPhone 4 SDK构建的块可以在部署到iPhone OS 3.0时运行吗?

时间:2010-07-07 16:21:55

标签: iphone objective-c ios4

如果您将应用程序设置为部署到早期版本,则最新的Xcode IDE要求您定位iPhone SDK 4,同时动态处理已弃用和新功能。

那么我可以使用像Blocks这样的新功能,还能在运行iPhone OS 3.0或3.1或3.1.3的设备上运行吗?

我还没有找到关于如何对以前的iPhone OS版本进行向后兼容的文档。如果你能指出我的官方文件,其中包括如何做到这一点,我会很感激。

4 个答案:

答案 0 :(得分:4)

据我所知,块不会在3.2之前工作,因为不包括Blocks运行时(像__NSStackBlock__这样的类或其他类)。除此之外,我的理解是,如果使用足够新的编译器,可以使用块编译代码。解决方案是在项目中有条件地包含自定义块运行时。

答案 1 :(得分:3)

虽然最简单的事情是尝试它,我认为它们不会造成伤害,如果存在但不使用(例如,你使用运行时if语句来使用前面的代码绕过块) 4.0设备),但它们肯定不会在4.0之前的设备上运行,并且Apple提供的使用块的所有API都将无法使用。总而言之,如果您有办法在没有块的情况下执行某些操作,则没有理由采用不同的方法来执行块 - 这只会增加冗余和重复代码 - 因此,如果您希望定位4.0之前的设备,你不应该使用块,但如果你想/需要使用块,不要以低于4.0的操作系统

为目标

答案 2 :(得分:0)

答案 3 :(得分:0)

不,在没有PLBlocks的情况下,无法在3.2之前的iPhone上使用块 - 即便如此,无论采用哪种方法,块都可能不存在。