addObject到NSMutableArray不起作用

时间:2014-06-17 18:35:54

标签: ios objective-c nsmutablearray

我写了一段代码:

    int SIZE= 516;
NSMutableArray  *sensorData, *sensorDataX,....,= [NSMutableArray arrayWithCapacity:SIZE];
NSString *strSensorData = [NSString stringWithFormat:@"%.6f %.6f %.6f %.6f ", deviceMotion.timestamp, deviceMotion.userAcceleration.x, deviceMotion.userAcceleration.y, deviceMotion.userAcceleration.z];
NSString *strSensorDataX = [NSString stringWithFormat:@"%.6f %.6f ", deviceMotion.timestamp, deviceMotion.userAcceleration.x];
[sensorData addObject:strSensorData];
[sensorDataX addObject:strSensorDataX];

当我检查时:

NSLog(@"Data : %@ ", sensorDataX   ); 

我得到的是(null)。即便如此:

NSLog(@"数据:%@",strSensorDataX)

它给出正确的数组。 有人知道为什么吗?

由于

3 个答案:

答案 0 :(得分:3)

我自己尝试过,看起来您无法按照您尝试的方式在一个语句中初始化多个对象。组中只有一个对象似乎实际上被初始化(最后一个,在我的测试中),而其他对象仍然是零。将数组初始化拆分为单独的语句,它应该可以正常工作。

NSMutableArray *sensorData = [NSMutableArray arrayWithCapacity:SIZE];
NSMutableArray *sensorDataX = [NSMutableArray arrayWithCapacity:SIZE];

答案 1 :(得分:2)

这一行:

NSMutableArray  *sensorData, *sensorDataX,....,= [NSMutableArray arrayWithCapacity:SIZE];

只会将最后一个变量分配给新数组。将它拆分为每个变量的单独行。

NSMutableArray *sensorData = [NSMutableArray arrayWithCapacity:SIZE];
NSMutableArray * sensorDataX = [NSMutableArray arrayWithCapacity:SIZE];
// and the rest

答案 2 :(得分:-1)

你一定要看看here如何初始化和分配多个变量/对象。

这看起来更优雅。

NSMutableArray *sensorData = [NSMutableArray arrayWithCapacity:SIZE]; 
NSMutableArray *sensorDataX = [sensorData mutableCopy]; 
NSMutableArray *sensorDataY = [sensorData mutableCopy];
// and so on..

希望这有帮助。