我写了一段代码:
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)
它给出正确的数组。 有人知道为什么吗?
由于
答案 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..
希望这有帮助。