2011-03-09 8 views
0

でコンパイルしていない:UIGraphicsBeginImageContextWithOptions私はiOSの4.0以降、次のコードをコンパイルして使用してきた4.3 SDK(4.2 SDKと罰金)

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

できるだけ早く私は4.3 SDK、このコードの特定の部分に切り替えて停止し、次の2つのエラーでコンパイル:

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

これはなぜ起こっているのですか? 4.3で何か変わったのですか?これをどうやって修正できますか?

XcodeはUIGraphicsBeginImageContextWithOptionsと同じ方法で、UIGraphicsBeginImageContextと同じ方法で色付けするのではなく、同時にクイックヘルプを提供しません。

答えて

0

まず、Base SDKがProject Infoの最新版を使用するように設定されていることを確認します。それがうまくいかない場合は、読んでください。

4.0で導入されたUIBackgroundTaskIdentifierで同様の問題が発生し、SDKのアップデート前に正常にコンパイルされました。 XcodeがiOS 3.2 SDKのヘッダーを使用しようとしていたことが判明しました。ビルドプロセスのコンソール出力では、Base SDKがProject Infoの最新のものに設定されていても、古いヘッダの検索パスがコンパイラに渡されていました。

プロジェクトをリロードしても役に立たなかった。 Xcodeを再起動しても効果はありませんでした。過去の更新でプロジェクトファイルを手動で編集する必要があるという報告があります。しかし、テキストエディタでプロジェクトファイルを開くと、SDKROOT変数が最新のSDKパスに正しく設定されていることがわかりました。

私のケースでは、「MyProject.xcodeproj/project.pbxproj」ファイルをソースコントロールからSDKを更新する直前のポイントに復元してから、Xcodeを再起動してプロジェクトを開くことができました。

+0

非常に興味深い。 Base SDKの設定を「最新のiOS(iOS 4.3)」から「iOS 4.3」に変更し、コードを正しくコンパイルしました。それから、「最新のiOS(iOS 4.3)」に戻し、コンパイルを続けました。うーん...ある種のXcodeグレムリンがパントされる必要があります。ありがとう! – TrekOnTV2017

+0

忘れてしまったこと私もそれを試みたが、私の場合はうまくいかなかった。私は比較のために悪いプロジェクトファイルのコピーを保管しておきたいと思います。興味深いことに、共有のおかげで –

0

私はそのシンボルと他のシンボル、セレクタ、マクロとも同じ問題を抱えていました。他のレスポンダと同様に、すべてをクリーニングし、あらかじめコンパイルされたヘッダを削除してもそれを修正することはできませんでした。また、SDKの変更もありませんでした。シミュレータビルドからデバイスビルドに切り替えてから、元の状態に戻すという問題を修正しました。

+0

。この種のバグは本当に面倒です。本当にここで何が起こっているのか分かりません。 – TrekOnTV2017

関連する問題