初始化/清除字符串变量cocoa的最佳方法

时间:2010-05-27 14:52:34

标签: iphone initialization nsstring

我有一个通过循环解析文本的例程。在每个记录的最后我需要清除我的字符串变量,但我读到someString = @“”实际上只是指向一个新的字符串&导致内存泄漏。

处理此问题的最佳方法是什么?我是否应该使用可变字符串变量并在迭代之间使用setString:@“”?

2 个答案:

答案 0 :(得分:1)

在这种情况下,您必须小心创建NSString :(工厂方法)或(alloc init或(使用@“”)。

如果使用@“”,则为常量字符串,请参见此处:Constant NSString

如果你使用[[NSString alloc] init],你需要释放它。你只需要做[someString release]。

如果使用[NSString stringWithFormat:@“”]之类的东西,则不需要发布它,因为它已经被运行时自动释放了

答案 1 :(得分:0)

由于NSStrings是不可变的,因此无法更改字符串的内容。通过用@“”初始化它,你实际上是在创建一个常量的NSString对象。

您可以使用循环的本地NSString,并在循环结束时释放它 - 或者您可以使用NSMutableString。我更喜欢循环本地字符串。

for ( ; ;) {
    NSString* str = [[NSString alloc] initWithFormat:@"%@", CONTENT];
    ...
    [str release];
}