i
не объявлено как NSInteger
, оно объявлено как указатель на NSInteger
.
Поскольку NSInteger
равно 4 байта, при добавлении 1 указатель фактически увеличиваетсяразмером 1 NSInteger
или 4 байта.
i = 0;
...
i += 1; //Actually adds 4, since sizeof(NSInteger) == 4
...
NSLog(@"%d", i); //Prints 4
Эта путаница возникает из-за того, что NSInteger
не является объектом, поэтому вам не нужно объявлять указатель на него.Измените свое объявление на это для ожидаемого поведения:
NSInteger i = 0;