2014-01-30 6 views
1

다른 클래스 (클래스 B)에 대한 참조가있는 클래스 A가 대리자로 있다고 가정 해보십시오. 그 위임 클래스는 ID 상태에 대해 열거 된 값들을 정의했다.여러 클래스에서 enum을 어떻게 공유합니까?

클래스 A에서 대리자 (클래스 B)를 상태 중 하나를 나타내는 열거 형으로 설정하는 방법은 무엇입니까? A 급은이 주들에 대해 알지 못했을 겁니다. 그렇죠?

+0

위임자 cla에서 열거 형을 정의 할 수 있습니다. 더 나은 아직 필요한 enums와 별도의 대리인 프로토콜을 확인하십시오. 위임자 (또는 동일한 유형의 델리게이트)가 필요 한 클래스는 열거 형에 액세스 할 수 있습니다. –

답변

2

클래스 A은 이러한 상태를 전혀 알지 못합니다. 맞습니까?

물론입니다. 클래스 Aenum을 알리려면 해당 정의를 B의 헤더에 넣으십시오. 이 같은 ClassBStates을 방법을 정의 할 수 있습니다

typedef enum { 
    kClassBState1 
, kClassBState2 
, kClassBState3 
} ClassBState; 

클래스 B : 당신이 태그로 enum를 입력 할 필요가 없습니다 것입니다 수 있도록 선택적으로, 당신은 당신의 enumtypedef

-(void)switchToState:(ClassBState)newState; 

클래스 A 호출 할 수 있습니다 이 방법은 다음과 같습니다.

ClassB *instB = [[ClassB alloc] init]; 
[instB switchToState:kClassBState3]; 
+0

그리고 Apple이 Xcode에서 코드를 수행 할 수있게 해주는 NS_ENUM 및 NS_OPTIONS 매크로를 제공한다는 것을 기억하십시오 완료 및 향상된 유형 확인 : http://nshipster.com/ns_enum-ns_options/ –

2

다른 .h 파일에서 enum을 정의한 다음 두 클래스 (* .h) 파일에서 해당 파일을 #import 할 수 있습니다. 그 정도면 충분합니다.

그런 다음 열거 형을 참조하기 만하면됩니다.

관련 문제