gpt4 book ai didi

objective-c - NSString 发布

转载 作者:行者123 更新时间:2023-12-04 02:20:02 24 4
gpt4 key购买 nike

我有这个字符串代码,我在尝试释放内存时遇到问题,我知道只有那些释放它的人会初始化并且不是自动释放,但是我在字符串“end”和 nSum 释放时遇到了问题。

NSString *urlBase = [[NSString alloc] initWithFormat:@"http://service.svc/"];
NSString *op = [[NSString alloc] initWithFormat:@"op1"];
NSString * final = [urlBase stringByAppendingFormat:op];
NSString * nSum = sumTextfield.text;
final = [final stringByAppendingFormat:nSum];

//release

[ urlBase release ];
[ op release ];
//[final release]; error
//[final autorelease]; error

谢谢你的帮助。

更新:
- (IBAction)mostrarOpciones {
// code (UP)
}

最佳答案

如果您使用以 init、new、copy 或 mutableCopy 开头的方法创建对象,那么您拥有该对象并负责在完成后释放它(或自动释放它)。如果您使用任何其他方法创建一个对象,该对象将自动释放,您不需要释放它。在这种情况下,如果你想保留它,你实际上需要保留它。苹果有一个 Memory Management Programming Guide这包括所有这些规则。

您发布的代码实际上是正确的。您需要发布 urlBaseop因为您使用以 init 开头的方法创建了它们(在本例中为 initWithFormat:)。 finalnSum已经为您自动发布。 final 是由不以 init、new、copy 或 mutableCopy 开头的方法创建的(在本例中为工厂方法 stringByAppendingFormat:)。 nSum 由名为 text 的方法返回。 ,并且您可以假设 sumTextField “拥有”它或在将其返回给您之前已自动释放它,因此您不负责释放它。

关于objective-c - NSString 发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8702540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com