如果我有一个方法
- (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 解决了我所有的问题。
那么“非分配”字符串是自动释放的字符串吗?我问这个问题是作为另一个问题的后续问题(这是完全不相关的,也是我创建这篇文章的原因),一些消息来源说我不需要重新分配字符串。我很困惑,因为我的代码的行为告诉我不然。
戴夫说得对。您只需要担心打电话release
在你认为的物体上new
, alloc
, retain
, or copy
.
上述规则非常有效,但如果您很好奇并想了解更多细节,我建议您阅读内存管理编程指南来自苹果的文档。它是免费的,并且从基本概念到很多细节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)