2011-12-16 2 views
1

컴파일러 지시문을 사용하여 특정 대리인이 구현되었는지 여부를 제어 할 수 있습니까? kShouldLoadFromCSV이 정의되지컴파일러 조건부를 사용하여 대리인 구현을 제어 하시겠습니까?

#ifdef kShouldLoadFromCSV 
#import "CHCSVParser.h" 
#endif 

@interface MyAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate, CHCSVParserDelegate>{ 

경우에, 나는 CHCSVParserDelegate을 구현하고 싶지 않은 :

는 예를 들어, 다음 코드에서, 난 단지 우리가 상수가 정의되어 있다면 라이브러리를 포함합니다. 인터페이스 선언에 컴파일 지시문을 사용하려고 시도했지만 작동하지 않았습니다.

이 방법이 있습니까?

#if kShouldLoadFromCSV 
    @interface MyAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate, CHCSVParserDelegate>{ 
#else 
    @interface MyAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate>{ 
#endif 

을 또는 당신이 원하는 경우에, 어쩌면 더 열심히는 취향의 문제 읽기 :

+0

주의 사항 그것이 '컴파일러 지시문'은 아니지만,는 ' 전처리 지시어 '. – jv42

+0

@ jv42 - 전화하세요. – Moshe

답변

3

이 작업을 수행 할 수

@interface MyAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate 
#if kShouldLoadFromCSV 
     , CHCSVParserDelegate 
#endif 
>{ 

당신은 기억해야을 그 처리기 ISN ' 구문 인식, 그것은 단지 컴파일러의 입력에 영향을 미칩니다.

@interface MyAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate >{ 
#if kShouldLoadFromCSV 
    , CHCSVParserDelegate 
#endif 
> { 
+0

+1 더 읽기 쉬운 솔루션입니다. – Hyperbole

+0

첫 번째 방법을 시도했지만 쉼표를 잘못 입력 했어야합니다. – Moshe

0

당신은 뭔가를 시도 할 수 있습니다. 그것은 (예 ... 다른 조건 범주를 필요 거라고 상상)을 확장하는 것이 더 쉽습니다 이후, 다음처럼 뭔가를 사용하십시오 :

@interface MyAppDelegate : NSObject 
< 
    UIApplicationDelegate, UITabBarControllerDelegate 
#if kShouldLoadFromCSV 
    , CHCSVParserDelegate 
#endif 
> { 
... 
} 
3

가 또 다른 포맷 옵션을 제공하기 위해 :

@interface MyAppDelegate : NSObject 
#if kShouldLoadFromCSV 
    <UIApplicationDelegate, UITabBarControllerDelegate, CHSVParserDelegate> 
#else 
    <UIApplicationDelegate, UITabBarControllerDelegate> 
#endif 
{ 
... 
} 

을하지만 이미 볼 수 있듯이, 그것은 전적으로 취향의 문제이다

관련 문제