升级到XCode 4后编译器错误

时间:2011-05-02 01:38:31

标签: iphone xcode ios ios4

我已经将xcode和ios sdk升级到最新版本(xcode 4.0 / ios sdk 4.3),现在我在之前构建的项目上遇到了编译器错误。

这是代码:

- (void)layoutSubviews
{
    int w = 320;
    int h = 480;

    float ver = [[[UIDevice currentDevice] systemVersion] floatValue];
    // You can't detect screen resolutions in pre 3.2 devices, but they are all 320x480
    if (ver >= 3.2f){
        UIScreen* mainscr = [UIScreen mainScreen];
        w = mainscr.currentMode.size.width;
        h = mainscr.currentMode.size.height;    

        if( ver >= 4.0f ) {
            float scaleFactor = mainscr.scale;

            // this will scale the OpenGLView for retina screens
            self.contentScaleFactor = scaleFactor;
            CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer;
            eaglLayer.contentsScale=scaleFactor; //new line            
        }
    }

    [context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:(CAEAGLLayer *)self.layer];
    setOpenGLSize(w,h);
    [self drawView:nil];
}

这些是错误:

error: property 'scale' not found on object of type 'UIScreen *' [2]
error: property 'contentScaleFactor' not found on object of type 'EAGLView *' [2]
error: property 'contentsScale' not found on object of type 'CAEAGLLayer *' [2]

我将Base SDK设置为iOS 4.3,部署目标设置为iOS 3.0 如果我将deplyment目标设置为4.3,则错误消失,但我希望应用程序在3.0及更高版本上运行。

代码或项目有什么问题?

1 个答案:

答案 0 :(得分:1)

“我将Base SDK设置为iOS 4.3,部署目标设置为iOS 3.0”

所以它警告你在4.0中引入了属性scale,contentScaleFactor和contentsScale,你不能在3.x中使用它们。

如果你真的想部署到3.x(而且我所看到的一切都说你的应用程序支持它是值得怀疑的,特别是自iOS2后iPad的统一以来)你必须解决这些问题属性不存在。