Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.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 将换行符追加到NSString_Iphone_Objective C_Nsstring - Fatal编程技术网

Iphone 将换行符追加到NSString

Iphone 将换行符追加到NSString,iphone,objective-c,nsstring,Iphone,Objective C,Nsstring,我有这个: if (soapResults != nil) { soapResults = [soapResults stringByAppendingString:@"\n"]; } 但我得到一个警告: 构建时从不同的Objective-C类型分配 当我在设备上运行它时,我得到: Program received signal: "EXC_BAD_ACCESS". 来自gdb 你知道如何在没有警告或错误的情况下将换行符附加到NSString吗 感谢您的帮助//:)另一种选择

我有这个:

if (soapResults != nil) {
    soapResults = [soapResults stringByAppendingString:@"\n"];
    }
但我得到一个警告:

构建时从不同的Objective-C类型分配

当我在设备上运行它时,我得到:

Program received signal: "EXC_BAD_ACCESS".
来自gdb

你知道如何在没有警告或错误的情况下将换行符附加到NSString吗


感谢您的帮助//:)

另一种选择是:
[nsstringwithformat:@“%@\n”,soapResults]
,即使逻辑相同


但是,即使在stringByAppendingString的情况下,它也会返回一个新字符串,但不会更改目标,因此您必须将新字符串分配给类NSString的新实例。

您可能会遇到内存管理问题,soapResults可能是指向已解除分配的对象的错误指针。很难说没有看到更多的代码,但是检查对象最初被分配到哪里是一个好的开始


例如,如果它是通过[NSString stringWith…]调用分配的,那么默认情况下它是自动删除的,即它将在运行循环结束时被释放,如果您想保留它,您必须保留它。

从-stringByAppendingString:返回的对象是自动删除的。如果你想让它持续下去,你必须保留它。如果不保留它,下次尝试访问它时将出现内存异常


确保发生这种情况的一个简单方法是将“soapResults”声明为属性,并为其合成访问器。

您使用的是正斜杠,这意味着它将忽略n,因此基本上不追加任何内容。我相信这可能是个问题

你可以试试这个,它对我很有用:

NSString *content1 = [messageObject valueForKey:@"content"];
NSString *seprator = @"\n----------------------\n";
NSString *myString = [NSString stringWithFormat:@"%@\n%@\n",seprator,content1];
content = [content stringByAppendingString:myString];

`

我发现使用NSString时\r比\n更有效

因此:


soapResults的类型是什么?它在哪里声明?您会得到警告,因为您试图更改NSString对象,但您不能!,请尝试在NSMutableString中改用。除非确实需要,否则不要使用格式字符串。当您可以只使用-stringByAppendingString时,解析它们的代价很高:
NSString *stringWithNewLine = [soapResults stringByAppendingString:@"\r"];