2011-03-09 39 views
0

我已經編譯和使用下面的代碼,因爲iOS的4.0編譯:一旦UIGraphicsBeginImageContextWithOptions不與4.3 SDK(細跟4.2 SDK)

if(UIGraphicsBeginImageContextWithOptions != NULL) 
{ 
    UIGraphicsBeginImageContextWithOptions(drawCopyFS.frame.size, NO, 0.0); 
} 
else 
{ 
    UIGraphicsBeginImageContext(drawCopyFS.frame.size); 
} 

如我切換到4.3 SDK,這個代碼特定片停止用下面的兩個錯誤編譯:

  • 'UIGraphicsBeginImageContextWithOptions' undeclared (error on line #1)
  • Implicit declaration of function 'UIGraphicsBeginImageContextWithOptions' (error on line #7)

任何人有任何想法,爲什麼發生這種情況?在4.3中有些改變,或者我該如何解決這個問題?

Xcode不會像UIGraphicsBeginImageContext一樣爲UIGraphicsBeginImageContextWithOptions着色,同時它也不提供任何快速幫助。

回答

0

首先確保Base SDK設置爲使用Project Info中的最新版本。如果這不起作用,請繼續閱讀。

我有一個UIBackgroundTaskIdentifier類似的問題,它是在4.0中引入的,並且在SDK更新之前編譯好了。原來,Xcode試圖使用iOS 3.2 SDK中的頭文件。構建過程的控制檯輸出顯示舊的標題搜索路徑已傳遞到編譯器,即使基本SDK在Project Info中最明顯地設置爲最新。

重新加載項目並沒有幫助。重新啓動Xcode不起作用。有報道說過去的更新需要手動編輯項目文件。但是,當我在文本編輯器中打開項目文件時,我發現SDKROOT變量已正確設置爲最新的SDK路徑。

在我的情況下,關閉Xcode,從源代碼控制中恢復'MyProject.xcodeproj/project.pbxproj'文件到更新SDK之前的一個點,然後重新啓動Xcode並打開項目。

+0

非常有趣。我已經將基礎SDK設置從「最新的iOS(iOS 4.3)」更改爲「iOS 4.3」,並且代碼編譯得很好。然後我將它改回「最新的iOS(iOS 4.3)」,並且它保持良好的編譯。嗯...看起來像某種Xcode gremlin需要被踢開。謝謝! – TrekOnTV2017

+0

忘了提起我也試過,但它不適用於我的情況。我希望我保留一份壞項目文件的副本作比較。 –

0

我遇到了同樣的問題,那個符號以及其他一些符號,選擇器和宏。與其他響應者一樣,清理所有內容並刪除預編譯頭文件並沒有解決問題。也沒有改變SDK。什麼修復它是從模擬器構建切換到設備構建,然後切換回來。

+0

有趣,感謝分享。這些錯誤真的很煩人。很難說出這裏發生了什麼。 – TrekOnTV2017