我已经将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及更高版本上运行。
代码或项目有什么问题?
答案 0 :(得分:1)
“我将Base SDK设置为iOS 4.3,部署目标设置为iOS 3.0”
所以它警告你在4.0中引入了属性scale,contentScaleFactor和contentsScale,你不能在3.x中使用它们。
如果你真的想部署到3.x(而且我所看到的一切都说你的应用程序支持它是值得怀疑的,特别是自iOS2后iPad的统一以来)你必须解决这些问题属性不存在。