7

NSString を NSMutableString に初期化する方法はありますか? また、逆順ですか?

-(void)st:(NSString *)st
{
  NSMutableString str = st; // gives warning..
  NSLog(@"string: %@", str);
}
4

4 に答える 4

11

NSString不変の表現 (または最悪の場合は読み取り専用ビュー) です。したがってNSMutableString、変更可能であることがわかっている場合はにキャストするか、変更可能なコピーを作成する必要があります。

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

mutableCopy保持カウントが 1 の新しく初期化されたコピーを返すため、自動解放しました。

于 2009-11-30T03:29:36.930 に答える
4

NSMutableString を NSString に設定できますが、その逆はできません

NSString *str =  [NSMutableString alloc]init];

大丈夫ですが、

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

ではありません。これは、NSMutableString が NSString のサブクラスであるためであり、NSString であるということです。ただし、NSString から変更可能な文字列を作成することはできます。

NSMutableString *mStr = [str mutableCopy];
于 2009-11-30T03:27:20.537 に答える
4
NSString *someImmutableString = @"something";
NSMutableString *mutableString = [someImmutableString mutableCopy];

重要! mutableCopy自分が所有するオブジェクトを返すため、解放または自動解放する必要があります。

于 2009-11-30T03:28:25.093 に答える
1

スイフト2.0

Swift ユーザーの場合、Xcode 7 では次のように動作します。

var str : String = "Regular string"
var mutableStr : NSMutableString = NSMutableString(string: str)
于 2015-09-08T19:23:32.790 に答える