문자열 배열을 쉼표로 구분 된 단일 문자열로 변환하는 작업의 경우 아래 NSString 접근 방식 또는 NSMutableString 접근 방식에 큰 이점이 있는지 궁금합니다. (두 경우 모두, allNames는 NSStrings
의 NSArray
입니다.)루프에서 NSString 또는 NSMutableString을 사용하는 것이 더 좋습니다.
는 NSString 접근
NSString *listOfNames=[allNames objectAtIndex:0];
for (int i=1;i<[allNames count];i++){
NSString *thisName=[allNames objectAtIndex:i];
listOfNames=[listOfNames stringByAppendingFormat:@", %@",thisName];
}
인 NSMutableString 접근
NSMutableString *mutableListOfNames=[[NSMutableString alloc] init];
[mutableListOfNames appendString:allNames[0]];
for (int i=1;i<[allNames count];i++){
NSString *thisName=[allNames objectAtIndex:i];
[mutableListOfNames appendFormat:@", %@",thisName];
}
NSString *listOfNames=[NSString stringWithString:mutableListOfNames];
차이점은 'NSString'접근법은 짧은 시간 안에 많은 객체를 생성하고 해제한다는 것입니다. NSMutableString이 이것을 피하는 반면. 귀하의 프로그램이 ARC에 의해 관리되기 때문에 장기적으로 큰 차이를 만들지 못할 수도 있습니다. –
문자열 결과가 다음과 같이 보이는지 확인하십시오 :'@ ", foo, bar"'? – ThomasW
모든 코드를 한 줄로 바꿀 수 있습니다 :'NSString * listOfNames = [allNames componentsJoinedByString : @ ","]; – rmaddy