문제

iPhone 앱의 Base + Active SDK를 3.0으로 설정하고 배포 대상을 2.2로 설정하면 2.2 장치에서 새로운 버전의 기능을 사용할 수 있습니까?

예를 들어, UITableViewCell 이제 이미지를 사용하여 설정해야합니다 [cell.imageView setImage:image], 2.2에서는 전화 할 것입니다 [cell setImage:image]. 새로운 것을 사용합니다 [cell.imageView setImage:image] 2.2 장치에서 충돌?

도움이 되었습니까?

해결책

아니오 당신은 2.2에서 OS 3.0 호출을 할 수 없습니다. 더 이상 사용되지 않은 방법은 OS 3에서 최소한 정상적으로 작동해야합니다. OS의 많은 경우 감가 상각은 Apple이 감가 상각 된 방법보다는 새로운 방법을 사용하는 것을 권장한다는 것을 의미합니다. 그러나 이러한 방법은 미래에도 사라질 수 있습니다.

몇 가지 옵션이 있습니다.

  1. 앱과 메소드가 실제로 OS 3.0에서 작동하는 한 경고를 무시합니다.
  2. OS 버전을 결정하기 위해 런타임 확인을 받고 적절한 방법을 호출하십시오.

    double version = [[[UIDevice currentDevice] systemVersion] doubleValue];
    if (version >= 3.0) {
        [cell.imageView setImage:image];
    } else {
        [cell setImage:image];
    }
    

    또는 더 나은 것 :

    if ([cell respondsToSelector:@selector(imageView)]) {
         [cell.imageView setImage:image];
    } else {
         [cell setImage:image];
    }
    

    컴파일 타임 체크를 사용하여 사용하십시오 ifdef 지침은 작동하지 않습니다

  3. OS 2.2 지원. 3.x의 흡수가 상당히 높기 때문에 3.0을 목표로하는 것은 상당히 합리적입니다. 작은 앱의 경우 12 월에는 2,058 명의 사용자 중 3.0 이전 시스템에 27 명의 사용자가있었습니다. 말할 것도없이,이 옵션은 테스트 요구를 크게 줄입니다.

다른 팁

아니요, 2.x 장치에서 OS 3.0 호출을 사용할 수 없습니다. 2.X 장치에 3.0 표적 앱을 설치할 수 있다면 놀랄 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top