Iphone 字符串返回?
如何安全地返回NSString而不损坏数据? 例如,我曾经这样做过Iphone 字符串返回?,iphone,Iphone,如何安全地返回NSString而不损坏数据? 例如,我曾经这样做过 -(NSString *)compose { NSString *xml; return xml; } 如果xml的大小超过2 kb,是否可以安全地返回它…如何每次使用自动释放分配内存?方法stringWithFormat:将返回自动释放的NSString,以及string和许多其他方法。此外,您可以调用NSString上的autorelease方法将其添加到autorelease池中。我不能谈论NSString的大
-(NSString *)compose
{
NSString *xml;
return xml;
}
如果xml的大小超过2 kb,是否可以安全地返回它…如何每次使用自动释放分配内存?方法
stringWithFormat:
将返回自动释放的NSString
,以及string
和许多其他方法。此外,您可以调用NSString
上的autorelease
方法将其添加到autorelease池中。我不能谈论NSString
的大小限制,但我不知道为什么它们不能立即变大(我相信有人会纠正我)。NSString
方法stringWithFormat:
将返回一个自动删除的NSString
,就像string
和许多其他方法一样。此外,您可以调用NSString
上的autorelease
方法将其添加到autorelease池中。我不能谈论NSStrings的大小限制,但我不知道为什么它们不能立即变大(我相信有人会纠正我)。苹果已经测试过NSString类,所以它不能包含任何损坏错误。关于数据大小,除内存外没有任何限制。
对于自动释放问题,您必须将对象添加到自动释放池,如下所示:
- (NSString *)compose {
NSString *yourXMLText = [[[NSString alloc] initWithData:yourXMLData encoding:NSUTF8StringEncoding] autorelease];
return yourXMLText;
}
有关内存管理的更多信息,请参见:苹果已经测试了NSString类,因此它不能包含任何损坏错误。关于数据大小,除内存外没有任何限制。
对于自动释放问题,您必须将对象添加到自动释放池,如下所示:
- (NSString *)compose {
NSString *yourXMLText = [[[NSString alloc] initWithData:yourXMLData encoding:NSUTF8StringEncoding] autorelease];
return yourXMLText;
}
有关内存管理的更多信息,请参见以下内容:我将使用像David所说的NSString
便捷方法之一
NSString * xml = [NSString stringWithFormat:....];
return xml;
这将在运行循环结束时自动释放。我将使用像David说的NSString
便利方法之一
NSString * xml = [NSString stringWithFormat:....];
return xml;
这将在运行循环结束时自动释放。2Kb应该不是问题,但是如果在一个紧密的循环中进行此调用(即多次调用,但没有移出调用compose方法的方法),则有可能会消耗直到稍后才会释放的内存
如果您担心引入内存泄漏(我想这就是您所说的损坏),那么请不要错过非常有用的检测工具(最简单的方法是进入“运行”菜单,选择“运行时使用性能工具->泄漏”。如果您遇到的问题是转储和突然退出,您可以检查僵尸(访问释放的内存)直接从仪器工具:
文件->新建
选择iPhone或iphonesimulator(取决于您想要在什么上运行它,我只对大多数情况使用模拟器)和内存选项。
然后从右边挑选僵尸
单击选择
将默认目标(在工具栏中)设置为启动Executable->YourAppName
您将能够识别导致问题的代码行。2Kb应该不是问题,但是如果您在一个紧密的循环中进行了此调用(即多次调用而没有移出调用compose方法的方法),则有可能会消耗直到稍后才会释放的内存
如果您担心引入内存泄漏(我想这就是您所说的损坏),那么请不要错过非常有用的检测工具(最简单的方法是进入“运行”菜单,选择“运行时使用性能工具->泄漏”。如果您遇到的问题是转储和突然退出,您可以检查僵尸(访问释放的内存)直接从仪器工具:
文件->新建
选择iPhone或iphonesimulator(取决于您想要在什么上运行它,我只对大多数情况使用模拟器)和内存选项。
然后从右边挑选僵尸
单击选择
将默认目标(在工具栏中)设置为启动Executable->YourAppName
您将能够识别导致问题的代码行