Iphone int++;增加4
这是我的密码:Iphone int++;增加4,iphone,objective-c,ios,int,Iphone,Objective C,Ios,Int,这是我的密码: - (IBAction)NextTouched:(id)sender { NSLog(@"Index = %i", index); if([project getCount]>(index++)) { [self setUI:index]; } } 索引是一个整数,如my.h文件中声明的: @property (nonatomic) int *index; 但是每次我点击按钮,日志显示整数增加了4。你能告诉我为什么吗?它上升4的原
- (IBAction)NextTouched:(id)sender {
NSLog(@"Index = %i", index);
if([project getCount]>(index++)) {
[self setUI:index];
}
}
索引是一个整数,如my.h文件中声明的:
@property (nonatomic) int *index;
但是每次我点击按钮,日志显示整数增加了4。你能告诉我为什么吗?它上升4的原因是因为索引是指针。当递增指针时,其值会随着指针指向的数据类型的大小而增加,在本例中为
int
,即4个字节
鉴于索引
似乎是NSArray
(或其他某个集合类)的索引,我认为您希望将其设置为int
,而不是int*
,以解决您的问题。最好还是让它不带符号,比如NSUInteger
,它是从count
方法返回的类型
另外,我认为您应该使用前缀增量而不是后缀增量,以便
if
测试使用新增加的值,不是以前的值。只需将索引定义为一个整数变量,而不是指针,如果您想在递增之前打印该值,请使用index++或使用++index递增该值,然后打印显示索引
声明。它不是指针而不是整数吗?为什么在日志调用中递增它?你没有得到实际值,你得到的是实际值减去1(即在++
操作符增加它之前)。哎呀,我编辑了代码:p你可能只需要更改@property(nonatomic)int*索引
到@属性(非原子)整数索引代码>。另外,为了将来参考,请不要忽略编译器警告!索引不是整数,索引是指向整数的指针。我一直想知道为什么这么多人写int索引。是的,因为int*index,*ptr,anInt,旧的C语言遗产。。。糟糕的风格。int-index,这就是你所拥有的。int*。抛弃明星:)