문제

NSString을 NSMutableString으로 초기화하는 방법이 있습니까? 그리고 역 순서도?

-(void)st:(NSString *)st
{
  NSMutableString str = st; // gives warning..
  NSLog(@"string: %@", str);
}
도움이 되었습니까?

해결책

NSString 불변의 표현입니다 (또는 최악의 경우 가독적 인 견해). 따라서 캐스트해야합니다 NSMutableString 변이 가능하다는 것을 알고 있거나 돌연변이 가능한 사본을 만들면 다음과 같습니다.

-(void)st:(NSString *)st
{
  NSMutableString *str =  [[st mutableCopy] autorelease];
  NSLog(@"string: %@", str);
}

나는 그것을 자동으로 유지했다 mutableCopy 1의 유지 카운트로 새로 초기화 된 사본을 반환합니다.

다른 팁

NSString *someImmutableString = @"something";
NSMutableString *mutableString = [someImmutableString mutableCopy];

중요한! mutableCopy 소유 한 객체를 반환하므로 릴리스되거나 자동 제출해야합니다.

NSMutableString을 NSString으로 설정할 수는 있지만 다른 방법은 아닙니다.

NSString *str =  [NSMutableString alloc]init];

괜찮아요

NSMutableString *str = [[NSString alloc]init];

아니다. NSMutableString은 NSString의 서브 클래스이기 때문에 NSString이기 때문입니다. 그러나 NSString에서 변동성 문자열을 만들 수 있습니다.

NSMutableString *mStr = [str mutableCopy];

스위프트 2.0

신속한 사용자의 경우 다음은 Xcode 7에서 작동합니다.

var str : String = "Regular string"
var mutableStr : NSMutableString = NSMutableString(string: str)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top