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 &

我试图在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 < 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)
,因为