我现在已经有一段时间与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
问题是字符串可能太长了吗?
答案 0 :(得分:7)
您需要保留stringByAppending的返回值...或将其分配给您的属性:
self.dataString = [self.dataString stringByAppendingString:superString];
答案 1 :(得分:1)
你没有保留它。 [dataString stringByAppendingString:superString];
返回一个自动释放的字符串。
[dataString autorelease];
dataString = [[dataString stringByAppendingString:superString] retain];