2011-05-02 10 views
0

xcode 및 ios sdk를 최신 버전 (xcode 4.0/ios sdk 4.3)으로 업그레이드 했으므로 이전에 작성한 프로젝트에서 컴파일러 오류가 발생합니다. Xcode 4로 업그레이드 한 후 컴파일러 오류가 발생했습니다.

코드입니다 :

- (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]; 
} 

그리고 이러한 오류입니다 : 내가에 deplyment 목표를 설정하면 아이폰 OS 3.0 에 내가 자료 SDK는 아이폰 OS 4.3에 잘 살고있다

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] 

및 배포 대상 4.3, 오류 dissapear,하지만 3.0 이상에서 실행하는 응용 프로그램을 원한다.

코드 또는 프로젝트에 어떤 문제가 있습니까?

+0

그냥 웃어서, UIView.h보세요. contentScaleFactor에 커서를 놓고 정의로 건너 뛸 수 있는지 확인하여 Xcode를 사용할 수 있습니다. iOS의 제 버전에서 할 수 있습니다. – ditkin

답변

1

"나는 자료 SDK는 아이폰 OS 3.0에 아이폰 OS 4.3 및 배포 목표에 잘 살고있다"그래서 속성이 contentScaleFactor 및 contentsScale 4.0에 도입 된 확장 및 3에서 사용할 수 없음을 경고한다 .엑스.

정말로 3.x로 배포하려는 경우 (특히 iOS 이후 iPad2의 통합 이후 앱이이를 지원하게 만드는 것은 의문의 여지가 있습니다.) 그런 다음 해결해야합니다 그 속성은 존재하지 않습니다.

+0

경고가 아니며 오류입니다. – Damian

+0

iphone/ipod 1 세대가 해당 버전을 계속 실행하기 때문에 iOS3을 지원하고 싶습니다. – Damian

+0

예, 무시할 수없는 경고입니다 :-) 공정하게, 제대로 작동하도록 만들면 런타임 검사 만하면됩니다. 한 가지 방법은 respondsToSelector를 사용하여 속성이 있는지 여부를 확인하고 작성시 performSelector를 사용하여 값을 읽는 NSInvocation을 사용하는 것입니다. –

관련 문제