2010-06-28 62 views
1

我想在我们的iphone应用程序中启用代码块,以便我可以运行xcode附带的静态分析工具。我得到这样的警告(或错误,这取决于我使用的编译器),当我运行构建和分析任务:如何在xcode iPhone项目中启用代码块?

/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIView.h:252:72: error: blocks support disabled - compile with -fblocks or pick a deployment target that supports them

我从iPhone OS 3.0改变了我的部署目标编译器的默认,和我将编译器从GCC 4.2更改为LLVM 1.5和LLVM GCC 4.2,但没有运气。我不确定还有什么需要更改才能完成此工作,或者需要添加-fblocks参数。有人知道吗?

+0

铛静态分析器不应该需要块支持运行(我们从3.0开始使用它,当块不在iPhone OS中时)。在构建和分析之前是否清理过你的项目? – 2010-06-28 21:30:31

+0

我有。打嗝是从分析包含uikit及其所有内容的前缀头文件开始的,我的猜测是,通过在ios 4.0上构建它,它不能识别新的块语法,除非它以某种方式启用。如果我编译对3.2,我没有这个问题,这是一个解决方法,但我想对所有目标如果可能的话。 – Kevlar 2010-06-28 21:32:49

回答

2

在SDK 4.0中,如果使用包含块的新方法作为参数,那么静态分析器不起作用。您必须按如下方式明确启用块:在项目设置中,将-fblocks置于“Other C Flags”设置中。

+1

真的吗?请提交错误。 – bbum 2010-06-28 22:47:44

+0

问题是我没有明确地使用它们,但是当我在前缀头文件中包含UIKit时它们就存在了。该标志修复了它;感谢指针! – Kevlar 2010-06-29 18:11:15

+0

是否需要在-fblocks中添加“”? – 2012-05-18 14:02:30