2009-07-14 3 views
1

저는 Java 배경에서 왔으므로 Obj-C로 작업하는 몇 가지 방법을 고민하고 있습니다.Objective-C 스위치는 문자열의 내용을 정의합니다.

제공되는 숫자에 따라 NSString 변수에 다른 내용이 있어야합니다.

자바에서 나는 같은 것을 할 것입니다 :

string foo; 
switch (numberToSwtich){ 

    case 1: 
     foo = "Something!"; 
     break; 
    case 2: 
     foo = "Something Else!"; 
     break; 
} 

은 분명히 목표 - C에서 문자열의 두 가지 유형이 있습니다. NSString 및 NSSMutableString.

차이점은 나중에 변경할 수 있다는 것입니다. 그러나 자바처럼 NSString을 먼저 초기화 한 다음 나중에 내용을 설정하거나 NSMutableString을 사용해야합니까?

뭔가이 같은 비트 ...

NSString *aString = [[NSString alloc] init]; 

switch ([self getNumberOfSides]) { 
    case 1: 
     aString = @"A String"; 
     break; 
    case 2: 
     aString = @"Another String"; 
     break; 
} 

내가 예를 들어 숫자 키와 함께있는 NSDictionary를 사용하는 것과이 일을 다른-방법이 있습니다 알고 있어요,하지만 난을 사용하고 싶습니다 스위치.

감사합니다.

답변

1

코드가 완벽하게 유효합니다. NSMutableString을 사용할 필요가 없습니다.

을 사용하여 할당 한 빈 문자열을 해제하지 않기 때문에 코드에 누수가 발생합니다. 빈 문자열에 "문자열"클래스 방법을 사용하는 것이 좋습니다.

NSString *aString; 

switch ([self getNumberOfSides]) { 
     case 1: 
       aString = @"A String"; 
       break; 
     case 2: 
       aString = @"Another String"; 
       break; 
     default: 
       aString = [NSString string]; 
       break; 
} 
+0

감사합니다. 왜 그렇게 생각하지 않는지 모르겠다. 꽤 논리적입니다. 이 대괄호로 인해 머리가 이상해진다! – JonB

+1

[NSString string]을 사용할 때 진짜 필요성이나 목적이 없습니다 - 단지 @ ""를 사용하십시오. "string"팩토리 메소드는 일관성을 위해 거기에 있으며 유용 할 수있는 가변적 인 버전에서 사용하기 위해 존재합니다 ([NSMutableString string]). –

+1

일반적인 좋은 습관으로 NSString * aString = nil; 항상 그렇게하는 것이 좋습니다. – jbrennan

관련 문제