我有一个 NSString,我想将其值写入 NSMutableString。这是否有效:
NSString *temp = [NSString stringWithString:@"test"];
NSMutableString *mutable = temp;
我问这个问题是因为虽然这看起来可行,但我认为这会将 temp 和 mutable 分配给同一地址空间。当将值传递给方法或从方法返回值时,我经常遇到这个问题。有时我看到其他人这样做或使用 stringWithString 或 initWithString 创建可变字符串。谢谢
最佳答案
您可以使用 mutableCopy
方法,该方法创建接收器的可变副本并适用于采用 NSMutableCopying
的任何类。协议(protocol)(其中 NSString
是其中之一):
NSString *temp = [NSString stringWithString:@"test"];
NSMutableString *mutable = [temp mutableCopy];
这将创建字符串的可变副本,作为新的字符串实例。在这种情况下,它不适用,因为 temp
是一个自动释放的字符串,但如果您不再需要它,则需要释放您已复制的旧字符串。
由于 mutableCopy
包含“copy”,因此您需要对新字符串进行内存管理(根据 Apple Object Ownership Policy 获取它的所有权)。
您使用的方法只是将 mutable
分配为指向先前实例化的 NSString
的指针。
关于 cocoa 串问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1313836/