iPhone OS 3.0 기능 사용 2.2 장치에서 더 이상 사용되지 않은 2.2 기능 호출 대신
-
19-09-2019 - |
문제
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이 감가 상각 된 방법보다는 새로운 방법을 사용하는 것을 권장한다는 것을 의미합니다. 그러나 이러한 방법은 미래에도 사라질 수 있습니다.
몇 가지 옵션이 있습니다.
- 앱과 메소드가 실제로 OS 3.0에서 작동하는 한 경고를 무시합니다.
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
지침은 작동하지 않습니다OS 2.2 지원. 3.x의 흡수가 상당히 높기 때문에 3.0을 목표로하는 것은 상당히 합리적입니다. 작은 앱의 경우 12 월에는 2,058 명의 사용자 중 3.0 이전 시스템에 27 명의 사용자가있었습니다. 말할 것도없이,이 옵션은 테스트 요구를 크게 줄입니다.
다른 팁
아니요, 2.x 장치에서 OS 3.0 호출을 사용할 수 없습니다. 2.X 장치에 3.0 표적 앱을 설치할 수 있다면 놀랄 것입니다.