예를 들어, 유료 버전과 무료 버전의 여러 빌드가 있고 어떤 빌드에 따라 다른 인터페이스를 갖고 싶다면 인터페이스를 혼란스럽게하는 것 같습니다. 작성자. 내가 IB에 MyViewController.xib을로드인터페이스 빌더를 혼동하지 않고 컴파일 할 때 다른 인터페이스 선언을 사용하는 방법
// MyViewController.h
#ifdef FREE
@interface MyViewController : NSObject <UIActionSheetDelegate, ADBannerViewDelegate>
#else
@interface MyViewController : NSObject <UIActionSheetDelegate>
#endif
{
IBOutlet UILabel* myLabel;
}
- (IBAction) myAction:(id)sender;
, 그것은 '파일의 소유자'의 'myLabel'출구 '내보기'에 연결되어 "같은 정보 창에서 경고를 보여줍니다 예를 들어
그러나 'myLabel'은 더 이상 MyViewController에 정의되어 있지 않습니다. "
IB를 혼동하지 않도록 할 수있는 방법이 있습니까?
다른 옵션은 #ifdef가 아니며 모든 빌드에 대해 하나의 정의 만 있다고 가정합니다. ADBannerViewDelegate (iOS 4가 필요함)를 준수하는 컨트롤러로 구축하고 iOS 3.2에 배포하면 어떻게됩니까? 그게 효과가 있다면 어쩌면 아무런 문제가 없습니다.
+1은 조금 더 많은 작업이 필요하지만 코드 전체에 다른 #ifdef를 뿌리지 않아도 좋은 이점이 있습니다. 이 문제를 해결하기 위해 상속을 사용하는 것이 왜 발생하지 않았는지 나는 알지 못합니다. 매우 우아한 솔루션, 감사합니다! – zpasternack