Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 字符串返回?_Iphone - Fatal编程技术网

Iphone 字符串返回?

Iphone 字符串返回?,iphone,Iphone,如何安全地返回NSString而不损坏数据? 例如,我曾经这样做过 -(NSString *)compose { NSString *xml; return xml; } 如果xml的大小超过2 kb,是否可以安全地返回它…如何每次使用自动释放分配内存?方法stringWithFormat:将返回自动释放的NSString,以及string和许多其他方法。此外,您可以调用NSString上的autorelease方法将其添加到autorelease池中。我不能谈论NSString的大

如何安全地返回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

您将能够识别导致问题的代码行