NSString版本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NSString版本相关的知识,希望对你有一定的参考价值。

我有这个字符串代码,在尝试释放内存时遇到问题,我了解到只有那些释放它的人才进行初始化,而不是自动释放,但是我在使用字符串“ end”和nSum release时遇到问题。

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在“归还”给您之前已“拥有”它或已自动释放它,因此您不负责释放它。

另一答案

您无法释放未分配的NSString。由于未分配您的两个变量,因此不需要释放它们。

以上是关于NSString版本的主要内容,如果未能解决你的问题,请参考以下文章

Dealloc NSString导致崩溃

如何为 XSLT 代码片段配置 CruiseControl 的 C# 版本?

如何使用sublime代码片段快速输入PHP头部版本声明

vscode代码片段建议bug

typescript Angular最终版本的Angular 2测试片段。代码库https://developers.livechatinc.com/blog/category/programming

typescript Angular最终版本的Angular 2测试片段。代码库https://developers.livechatinc.com/blog/category/programming