NSString을 NSMutableString에 초기화하는 방법은 무엇입니까?
-
08-07-2019 - |
문제
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)
제휴하지 않습니다 StackOverflow