UIGraphicsBeginImageContextWithOptions没有使用4.3 SDK进行编译(适用于4.2 SDK)

时间:2011-03-09 19:07:35

标签: iphone cocoa-touch ios4

我从iOS 4.0开始编译并使用以下代码:

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不会像UIGraphicsBeginImageContextWithOptions一样着色UIGraphicsBeginImageContext,同时也不会为它提供任何快速帮助。

2 个答案:

答案 0 :(得分:0)

首先确保Base SDK设置为使用项目信息中的最新版本。如果这不起作用,请继续阅读。

我在UIBackgroundTaskIdentifier中遇到了类似的问题,它在4.0中引入并在SDK更新之前编译得很好。原来,Xcode试图使用iOS 3.2 SDK中的标头。构建过程的控制台输出显示旧的头文件搜索路径已传递到编译器,即使Base SDK最明确地设置为项目信息中的最新版本。

重新加载项目没有帮助。重新启动Xcode没有任何效果。有报告称,过去的更新需要手动编辑项目文件。但是,当我在文本编辑器中打开项目文件时,我发现SDKROOT变量已正确设置为最新的SDK路径。

在我的案例中有用的是关闭Xcode,将源代码控制中的“MyProject.xcodeproj / project.pbxproj”文件恢复到更新SDK之前的一个点,然后重新启动Xcode并打开项目。

答案 1 :(得分:0)

我遇到了与该符号相同的问题,还有一堆其他符号,选择器和宏。与其他响应者一样,清除所有内容并删除预编译的头文件并没有解决它。也没有改变SDK。修复它的是从模拟器构建切换到设备构建,然后切换回来。