2011-03-09 40 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