문제

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에서 유사한 방법을 사용할 수 있습니다.

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