NSString stringByAppendingString:递归长字符串

时间:2011-07-05 10:48:28

标签: iphone objective-c xcode nsstring

我现在已经有一段时间与NSStrings系统性问题,并将这些问题附加到另一个。我在网上搜索过,但是找不到一些让我满意的东西。

我在标题中声明了这样的字符串,并在实现中正确地进行了同步:

@property (nonatomic, retain) NSString *dataString;

我每刷新200毫秒的数据。旧的递归之后,我想将它放入一个字符串(NSData会更好)。字符串应该每200ms增长一次。

 dataString = [dataString stringByAppendingString:superString];


 NSLog(@"%@",dataString);

但是我的代码在这里打破了!

日志数据:

2011-07-05 12:40:54.039 Acceleration[1658:307] /AccelerationApp2011-07-05_12:40.txt
2011-07-05 12:40:56.825 Acceleration[1658:307] Acceleration:
 X-axis: -0.036224 
 Y-axis: -0.036224 
 Z-axis: -0.941833 
 Global Acc: 0.9 g 
(gdb) 

...然后我收到程序接收信号:EXC_BAD_ACCESS

问题是字符串可能太长了吗?

2 个答案:

答案 0 :(得分:7)

您需要保留stringByAppending的返回值...或将其分配给您的属性:

self.dataString = [self.dataString stringByAppendingString:superString];

答案 1 :(得分:1)

你没有保留它。 [dataString stringByAppendingString:superString];返回一个自动释放的字符串。

[dataString autorelease];
dataString = [[dataString stringByAppendingString:superString] retain];