2010-06-28 39 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