Can Blocks built for the iPhone 4 SDK work when deployed to iPhone OS 3.0?

前端 未结 4 1428
借酒劲吻你
借酒劲吻你 2021-01-19 06:04

The latest Xcode IDE requires you to target iPhone SDK 4 while dynamically handling deprecated and new functionality if you set the application to deploy to earlier releases

相关标签:
4条回答
  • 2021-01-19 06:43

    While the easiest thing to do is try it, I think that they wont cause harm if present but not used (eg. you use a runtime if statement to circumvent the blocks using code on pre-4.0 devices), but they will certainly not run on pre-4.0 devices, and all of the APIs Apple provides that use blocks will be unavailable anyway. All in all, if you have a way to do something without blocks, there is no reason to have a different way to do it with blocks -- this just increases redundancies and duplicated code -- therefore if you wish to target pre-4.0 devices, you should not use blocks, but if you want/need to use blocks, don't target OSes below 4.0

    0 讨论(0)
  • 2021-01-19 06:46

    As far as I know, blocks won't work pre-3.2 because the Blocks runtime is not included (classes like __NSStackBlock__ or whatever). Other than that, my understanding is that you can compile code with blocks if you use a new enough compiler. A solution would be to include a custom blocks runtime conditionally with your project.

    0 讨论(0)
  • 2021-01-19 06:50

    Use preprocessor directives (http://developer.apple.com/iphone/library/documentation/xcode/conceptual/iphone_development/115-Configuring_Applications/configuring_applications.html) such as TARGET_OS_IPHONE to use code for different iOS versions.

    0 讨论(0)
  • 2021-01-19 07:00

    No, blocks won't work on iPhone pre-3.2 without PLBlocks — and even then, whatever method is taking the block might not exist.

    0 讨论(0)
提交回复
热议问题