2009-06-27 3 views
4

방금 ​​iPhone SDK 3.0을 설치했고 UITableViewCell의 텍스트 속성이 더 이상 사용되지 않고 대신 textLabel.text를 사용해야합니다. 이것은 현재 시스템 버전을 알고 해당 메소드를 호출해야한다는 의미입니까? 이렇게.iPhone SDK 3.0 대. 2.2.1

UITableViewCell *cell = ...; 
if ([[[UIDevice currentDevice] systemVersion] isEqualToString:@"3.0"]) { 
    cell.textLabel.text = @"..."; 
} else { 
    cell.text = @"..."; 
} 

그렇다면 아주 성가시다.

답변

3

3.0 용으로 빌드하면 더 이상 2.2를 걱정하지 않아도됩니다. 주요 OS 업그레이드와 달리 사람들은 매우 빠르게 iPhone OS의 새 버전으로 업그레이드하고 있습니다. TapBots 블로그에서이 게시물을 확인하십시오 : iPhone 3.0 Adoption Rate.

앱이 승인되면 (지금부터 2 주가 지나면?) 거의 아무도 2.2를 더 이상 사용하지 않을 것입니다!

+0

안녕하세요. 일반 응용 프로그램 http://cocoabugs.blogspot.com/2010/09/utility-method-to-know-ios4-installed.html을 devlop하는 데 사용할 수 있습니다. –

1

2.2 또는 2.2.1과 같이 프로젝트에서 3.0 SDK를 사용하고 이전 버전을 타겟팅 할 수 있습니다.

이렇게하려면 Base SDK를 3.0으로 설정하고 iPhone OS 배치 대상 설정을 변경하십시오. 프로젝트에 대한 정보를 입수하면 두 설정 모두에 액세스 할 수 있습니다.

0

실제로 프로젝트를 빌드 할 때 언급 한 pgb와 같은 대상 펌웨어를 선택하기 때문에 실제로이 작업을 수행 할 필요가 없다고 생각합니다. 그런 다음 #ifdef 지시문을 사용하면됩니다. 여기에 대한 자세한 내용은 다음과 같습니다 iPhone check firmware version 훨씬 더 철저한 대답이 여기에 게시됩니다 : How to target a specific iPhone version?

편집는 : UIDevice Docs : 나는 systemVersion 실제로 문자열, 소스 실현 후 일부 텍스트를 제거했습니다. 프로젝트를 통해 다양한 파일에 사용할 경우

다음 어쩌면 AppDelegate에에 속성으로 추가하여 구성 할 수 있습니다, 그리고 그들이 이런 일을 수행하여 값을 검색 :

MyAppDelegate *theDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 
NSString *version = theDelegate.version; 

을하지만, 너무 버전 번호만큼 단순한 것에 너무 복잡하게 들릴 수도 있습니다.

4

대신 OS 버전을 확인하는 셀이 새 속성이있는 경우, 당신은 확인할 수 있습니다

if ([cell respondsToSelector:@selector(textLabel)]) { 
    // Do it the 3.0 way 
    cell.textLabel.text = @"..."; 
} else { 
    // Do it the 2.2 way, but avoid deprecation warning 
    [cell performSelector:@selector(setText:) withObject:@"..."]; 
} 
1

그것은 사용되지 않는 것을 그들이 새로운 방법을 제안하지만, 당신이 원하는 경우에 당신은 확실히 여전히 2.2 방법을 사용할 수 있습니다 3.0에서 실행되는 앱에 부정적인 영향을 미치지 않습니다. 사용자가 여전히 2.2에 관심이 있다면 제공된 링크를 확실히 확인하십시오. 당신이 3.0 용으로 컴파일한다면 큰 문제는 아닐 것이라고 생각합니다.

0

지금 2.2로 고정하려면 시뮬레이터에서 3.0으로 테스트해야합니다. 우리는 2.2와 3.0 사이의 이상한 행동 차이, 특히 테이블을 보았습니다.