나는 클래스의 인터페이스를 정의하는 헤더 파일이 있습니다Xcode에서 타겟 당 여러 개의 구현이 가능합니까?
// MyClass.h - included in all targets
//
@interface MyClass
+ (void) doThing;
@end
을 그리고 난 두 개의 서로 다른 실행 파일이 - 대상에 하나씩.
// MyClass+targetA.m - Only included in targetA
//
@implementation MyClass
+ (void) doThing { NSLog(@"targetA"); }
@end
// MyClass+targetB.m - Only included in targetB
//
@implementation MyClass
+ (void) doThing { NSLog(@"targetB"); }
@end
- 이 방법에 문제가 있습니까?
- 각 대상의 동작을 사용자 지정하는 더 좋고 간단한 방법이 있습니까?
방법 MyClass는 앱의 모양을 테마로합니다. MyClass 및 여러 대상에 대한 몇 가지 방법이 있습니다.
두 가지 구현이 너무 다른데 서로 다른 소스 파일에 존재한다고 정당화됩니까? 그렇지 않은 경우 타겟 전용 전 처리기 정의를 기반으로 한 #ifdef가 더 나은 선택 일 수 있습니다. 두 파일을 유지하기로 결정했다면 이름을 바꾸는 것이 좋습니다. 두 파일의 이름이 같을 때 Xcode가 혼란스러워지는 것을 보았습니다. (괜찮 았지만 편집기에서 잘못 표시했습니다.) – mah
@ 마 - 재미 있습니다! 귀하의 회신에 감사드립니다. 전 선행 처리기 정의를 사용했지만, 과거에 사용했기 때문에 정의했습니다. 구현은 다른 클라이언트에 대한 응용 프로그램을 테마로하기 때문에 구현 사이에는 약간의 차이가 있습니다. 이름 변경에 대한 좋은 팁 - 나는 그렇게 할 수는 없지만 그렇게하지 못했습니다. – Robert
클래스 이름과 소스 파일 이름 사이에는 아무런 연관이 없으므로 분명히 가능합니다. 물론 MyClass_client1.m, MyClass_client2.m 등과 같은 방식으로 이름을 지정하는 것이 가장 좋습니다. – mah