Objective c 值的增量不正确
我试图在Objective-C中增加一个变量。这似乎是一个简单的方法:Objective c 值的增量不正确,objective-c,ios,Objective C,Ios,我试图在Objective-C中增加一个变量。这似乎是一个简单的方法: dataPos++ 但当我这样做的时候,值会奇怪地增加: dataPos: 1, dataPos: 2, dataPos: 3, dataPos: 4, dataPos: 12, dataPos: 185273100` 这是我的代码: int dataPos = 0; uint8_t temparray[1]; for (int x=0; x < mapX; x++) { for (int y=0; y &
dataPos++
但当我这样做的时候,值会奇怪地增加:
dataPos: 1,
dataPos: 2,
dataPos: 3,
dataPos: 4,
dataPos: 12,
dataPos: 185273100`
这是我的代码:
int dataPos = 0;
uint8_t temparray[1];
for (int x=0; x < mapX; x++) {
for (int y=0; y < mapY; y++) {
for (int z=0; z < mapZ; z++) {
[mapdata getBytes:&temparray range:NSMakeRange(dataPos, dataPos+1)];
dataPos++;
NSLog(@"dataPos: %d", dataPos);
map[x][y][z] = temparray[0];
}
}
}
int-dataPos=0;
uint8_t临时数组[1];
对于(int x=0;x
mapData是一个NSMutableData,其中包含大约4194308个字节,map[][]是一个uint8_t数组
我尝试过清理构建文件夹,在模拟器(值从不增加,保持为1)和设备上构建
非常感谢您的帮助。
NSMakeRange
采用的是位置和长度,而不是开始和结束位置。您可能在temparray
中读取了太多数据,并在该过程中覆盖了dataPos
。有关更多信息,请参阅,并将代码改写为:
// snip
[mapdata getBytes:&temparray range:NSMakeRange(dataPos, 1)];
// snip
NSMakeRange
采用的是位置和长度,而不是起始和结束位置。您可能在temparray
中读取了太多数据,并在该过程中覆盖了dataPos
。有关更多信息,请参阅,并将代码改写为:
// snip
[mapdata getBytes:&temparray range:NSMakeRange(dataPos, 1)];
// snip
您正在溢出
temparray
并覆盖整数
您已经分配了1个字节,并使用它调用
getBytes
,将dataPos+1
字节复制到它。您可能打算使用NSMakeRange(dataPos,1)
,因为。您正在溢出临时数组并覆盖整数
您已经分配了1个字节,并使用它调用getBytes
,将dataPos+1
字节复制到它。您可能打算使用NSMakeRange(dataPos,1)
,因为