2012-10-18 1 views
1

나는 열거 이런 식으로 정의 make

-(void) setSortByWhat:(enum sortByWhatUpperType)sortByWhat 
{ 
    [[NSUserDefaults standardUserDefaults]setInteger:sortByWhat forKey:SortByWhat]; 
} 
-(sortbyWhatBottomType) sortByWhat 
{ 
    return [[[NSUserDefaults standardUserDefaults] objectForKey:SortByWhat] unsignedIntValue]; 
} 

그래서 열거 형에는 2 가지 유형이있는 것 같습니다. sortByWhatUpperType 및 sortbyWhatBottomType입니다.

왜 키워드가 2 개입니까? 왜 단지 하나가 아닌가? 내가 뭘 놓치고 있니? 어떤 것이 진정한 유형입니까?

열거 형 sortByWhatUpperType은 sortbyWhatBottomType과 동의어입니까?

통찰력이 있습니까?

이것이 바로 객관적으로 열거 형을 수행하는 표준 방법입니다.

답변

2

두 가지 유형을 정의했습니다. sortByWhatUpperType이라는 열거 형과 sortbyWhatBottomType이라는 별칭이 있습니다. typedef enum 문은 enum과 typedef의 두 부분으로 구성됩니다. 당신은 타입 정의를 생략하고

열거 sortByWhatUpperType 입력 한 수 { 을 // sortByRating = 0, sortbyDistance = 1, sortbyBuildingorProminent = 0 };

그런 다음 해당 유형의 변수를 선언 할 때마다 enum 유형이 필요합니다. 별칭을 사용하면이를 생략 할 수 있습니다.

struct에 대해서도 같은 구문이 적용됩니다. 그러나 C에서만 가능합니다. C++에서는 typedef가 없어도 기본적으로 enum/struct/class를 생략 할 수 있습니다.

+0

굉장 .... 그래서 C++에서는 그렇게 할 필요가 없습니다. 네가 그것에 대해 생각한다면, 사용자가 enum을 계속 입력하도록 강요하는 것은 좋은 프로그래밍 실습처럼 보입니다. 그렇게하면 형식이 열거 형임을 알 수 있습니다. 아니면 그렇지? –

+0

이고 Objective-c는 C++가 아닙니다. 나는 ... –

+0

어떤 것이 enum인지 그리고 어느 것이 struct인지를 상기시키는 많은 방법들이있다. 명명 규칙처럼. 그리고 예. 파일 이름을 .mm으로 바꾸지 않으면 C++ 구문 규칙이 적용되지 않습니다. –