2012-10-17 2 views
0

예를 들어, 왜이 사용애플은 열거 형 대신 매개 변수로 NSString 객체를 사용하는 이유는 무엇입니까?

는 대신 이런 일의
NSLocale *l = [[NSLocale alloc] [email protected]"en_US"]; 

: 그것은 엑스 코드에있는 NSString을 입력 할 때와 같은 많은 오류를 방지 할 수처럼

NSLocale *l = [[NSLocale alloc] initWithLocaleIdentifier:NSLocaleIdentifierUS]; 

것 같다,이 자동 고침은 없으며 Xcode는 자동 고침/자동 채우기 열거 형을 사용합니다. 또한, 열거 형 또는 상수를 통해 NSString을 사용하는 이유를 생각할 수 없습니다. 예를 들어, 새 버전의 SDK가 출시되면 Apple은 새 식별자를 추가 할 수 있지만 열거 형을 사용하여이를 수행 할 수도 있습니다.

NSData *data = [aString dataUsingEncoding:NSASCIIStringEncoding]; 

가 문자열을 사용하는 경우 :

if(userIdentifier == NSLocaleIdentifierUS) { 

    //English! 
} 

은 또한, 다른 방법을 위해, 애플은 매개 변수로 열거 나 특정 개체를 사용하여 문자열 상수를 통해 열거의 또 다른 장점은 열거 더 쉽게 비교 될 수 있다는 것입니다 localeIdentifier에 대해 다음을 수행하십시오.

NSData *data = [aString dataUsingEncoding:@"ascii"]; 

단순히 일관성이없는 것처럼 보입니다.

+0

저는 이것이 사과에 의해 정의되지 않은 ISO 표준이므로 사용자가 익숙해지기를 바랍니다. – mkral

+0

아마도 그것은 옳은 일입니다. 많은 웹 서비스가 표준을 사용하기 때문에 문자열로받을 때이를 열거 형으로 파싱하는 번거 로움을 덜어줍니다. – borrrden

+0

또한 수백 개의 로케일이 있습니다. ** en **에만 많은 것들이 있습니다. ** en_US_POSIX **와 같은 모든 변형을 더합니다. 로케일 목록은 시간이 지남에 따라 변경됩니다. 더 많은 열거 형을 추가하는 것이 힘들 것입니다. – rmaddy

답변

0

는 의견 제안이 질문에 여러 가지 답변이 있습니다.

  1. 로케일의 수백, 이미 존재하는 것들의 많은 변화가 (있다 예 "ko 페이지"와 "en_US_POSIX가"있다,
  2. 웹 서비스에서 데이터를 읽을 때 사용되는 형식은 "lang_COUNTRY"이므로, 다운로드 할 때마다 웹 데이터를 구문 분석하지 않도록 동일한 형식을 사용하는 것이 좋습니다 웹의 로케일 데이터
  3. 문자열은 객체이므로 wrapp없이 컬렉션에 쉽게 저장할 수 있습니다. 열거 형의 경우와 마찬가지로 NSNumber 객체에서 해당 객체를 가져와야합니다.