如果我有一个方法
- (void) myMethod:(NSString *)string {
[Object anothermethodWithString:string];
}
我称之为
[Object myMethod:@"this is a string with no alloc statement"]
我需要做类似的事情吗?
- (void) myMethod:(NSString *)string {
NSString *string2 = [[NSString alloc] initWithFormat:@"%@", string];
[Object anothermethodWithString:string2];
[string2 release];
}
我之前的myMethod方法是怎样的?我的代码出现了问题,似乎是在另一个方法中调用第二个方法时自动释放了字符串(就像例子中一样)。第二种修复myMethod的方式解决了我所有的问题。
所以,“non-alloc”字符串是自动释放的字符串吗?我问了这个问题作为对另一个无关问题的跟进,并且有一些来源说我不需要重新分配字符串。我感到困惑,因为我的代码行为告诉我相反。
new
、alloc
、retain
或copy
来创建字符串?如果没有,那么你不需要负责释放它。常量字符串 (@""
) 是全局且永久的。 - Dave DeLong