2011-08-04 3 views
4

12 개의 클래스와 카테고리가있는 커스텀 프레임 워크가 있다고 가정 해 보겠습니다. 그들은 모두 표준 코코아 클래스를 상속/확장합니다. 이런 이유로 제 프레임 워크는 컴파일 중에 < 코코아에 링크됩니다.Apple 프레임 워크를 필요로하는 커스텀 프레임 워크를 설계하기위한 코코아 모범 사례

내 질문에, < QuartzCore>가 필요한 클래스를 추가하면, 패키지하는 것이 좋습니다.

1) 단순히 클래스를 프레임 워크에 추가하고 QuartzCore를 가져 오면 내 프레임 워크의 사용자는 QuartzCore도 가져와야합니다.

2) 클래스를 다른 프레임 워크로 옮기면 모든 사용자가 내 프레임 워크를 가져 와서 QuartzCore를 모두 가져와야합니다. 첫 번째 프레임 워크에서 두 번째 프레임 워크를 사용할 수있는 클래스가 없습니다.

3) #ifdef #endif 또는 비슷한 것을 수행 한 다음 QuartzCore 프레임 워크를 약하게 링크하여 Cocoa 표준 클래스와 QuartzCore 종속 클래스가 단일 프레임 워크에 있지만 소비자가 QuartzCore를 프로젝트에 추가해야합니까? QuartzCore가 이상적으로 존재하지 않는다면 클래스/카테고리는 단순히 런타임에서 사용 가능하지 않을 것입니다.

답변

2

개인적으로 # 1로 갈 것입니다. 어쨌든 거의 사소한 응용 프로그램이 QuartzCore에 링크되어야합니다.

프레임 워크를 약하게 링크 할 수 있습니다. 링크 된 프레임 워크에서 QuartzCore를 제거한 다음 "기타 링커 플래그"에 "-weak_framework QuartzCore"인수를 추가하십시오.

약한 링크에 대한 전체 설명서는 Xcode에 있습니다. "Apple Frameworks와의 약한 연결"이라는 가이드가 있습니다.