为什么指向NSInteger的指针将该值乘以8?

Joe*_*Joe 1 pointers objective-c nsinteger

在我的标题中,我声明了一些变量,@property (nonatomic) NSInteger *soldWindows;并使用它们来跟踪计数,增加_soldWindows++;.结果一直是应有的8倍.我发现我的问题是将它声明为指针,所以我把它更改为@property (nonatomic) NSInteger soldWindows;解决了我的问题.

我的问题是,如果它只是存储一个内存地址,为什么整数值按8而不是任意地址?

Chr*_*sCM 5

指针指向内存中的某个位置.当你递增这样的指针时,你增加指针的值,指向内存中的新位置.鉴于此,您可以使用指针算法通过取消引用递增的指针来迭代数组中的连续元素.所以,你不是增加1,而是增加指针类型的大小.NSInteger只不过是64位或32位int,具体取决于平台.在这种情况下,它似乎是64位,即8字节.这是你的8位"缩放"来自的地方.

结论:您的修复是正确的!