현재 당분간 4.x 이전 버전에서 지원해야하는 iPhone 응용 프로그램을 개발하고 있습니다.4.0/3.2 이전의 iOS 버전과 NSClassFromString의 문제를 지원합니다.
내가 뭔가 4.x 또는 특정 3.2을 사용할 때, 나는 주어진 클래스가 존재하는지 확인하는 일반적인 방법, 즉 사용합니다 :
if(NSClassFromString(@"SomeClass")) {
// do stuff here
}
이 대부분 그렇지 않은 경우를 제외하고, 작동을 . 설명해 드리죠 :
클래스와 같은 :
- UIMoviePlayerViewController (만 사용할 수를 3.2 이상에서 설명서에 따라)
- UIGestureRecognizer 서브 클래스 (UIPanGestureRecognizer 같은; 등 UITapGestureRecognizer를)
이전 버전의 비공개 API에서 이미 사용 가능한 것처럼 유효한 클래스를 실제로 확인합니다. 이 경우입니까, 아니면 뭔가 빠졌습니까?
NSClassFromString()
접근법은 실제로 Apple에서 권장하므로 실제로는 좋지 않습니다.
안전을 기하기 위해 현재 런타임에 클래스 존재 여부를 확인하는 대신 OS 버전을 확인하고 있습니다.
다른 사람이이 문제가 있습니까? 감사합니다. .
실제로 개인 구현이있는 경우 Apple에서는 기능을 확인하기 위해 OS 버전을 확인하는 것이 좋습니다. 버전을 확인하는 것은 OS 3.2에서 변경된 축척 비율을보고하는 방식 때문에 UIScrollView에서 크기가 조정 된 뷰를 다시 렌더링 할 때도 필요합니다. –
자세한 내용은 WWDC 세션 130 - "미래의 응용 프로그램 교정"비디오를 참조하십시오. –