10.5 Base SDK, 10.4 배포 : 누락 된 방법을 구현하는 방법
-
06-09-2019 - |
문제
Mac OS X 10.4와 10.5를 모두 대상으로하는 프로젝트가 있습니다. 여기서 10.5는 기본 SDK입니다.
일부 방법 -[NSString stringByReplacingOccurrencesOfString:withString]
10.4에서 사용할 수 없습니다. 직접 기능을 구현할 수 있습니다. 또 다른 옵션은 메소드를 카테고리로 구현하는 것이지만 10.5 구현을 엉망으로 만들면 피하고 싶은 것입니다.
그렇다면 10.5를 엉망으로 만들지 않고 10.4를 구현하지 않으면 10.4 지원을 중단하기로 결정할 때 쉽게 구현할 수있는 방식으로 이러한 방법을 어떻게 구현합니까?
해결책
나는 당신이 사용해야한다고 생각합니다 +load
그리고 +initialize
에게 런타임에 메소드를로드하십시오 메소드가 아직 존재하지 않는 경우.
다른 팁
if ([myString respondsToSelector: @selector(stringByReplacingOccurrencesOfString:withString:)])
{
// 10.5 implementation
}
else
{
// 10.4 implementation
}
카테고리를 사용하지만 메소드 이름에 태그를 넣으십시오. 예를 들어, stringByReplacingOccurrencesOfString_TigerCompatible:
. 구현에서 Leopard의 구현 또는 귀하의 자체로 전화하십시오.
표범 전용으로 가면 "TigerCompatible"을 프로젝트 검색 한 다음 모든 메소드를 불 태우고 모든 통화 사이트를 UN 태그를 풀어주십시오.
Tiger에서 실행중인 경우 Main ()의 시작시로드되는 번들에 카테고리에 모든 누락 된 구현을 카테고리에 넣으십시오.
C Preprocessor 매크로를 사용하여 10.4를 위해 제작중인 관련 메소드를 삽입하는 것은 어떻습니까? 카테고리에서 이와 같은 일을 시도해보십시오. 10.4에 존재하지 않는 메소드는 10.4를 위해 제작 된 경우에만 포함됩니까?
#if defined(MAC_OS_X_VERSION_10_4) && MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4
// Put your implementations of the methods here
#endif
10.4를 지원해야합니까? 앱의 핵심 부분에서 10.5 만 사용하는 경우 10.5로만 진행하는 것을 고려해야 할 때가 될 수 있습니다.
어쨌든, 위의 특정 예제와 함께, 나는 그것에서 멀어지고 문자열의 변이 가능한 사본을 만들어 10.4에서 작동하는 nsmutableString에서 유사한 방법을 사용할 수 있습니다.