Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone int++;增加4_Iphone_Objective C_Ios_Int - Fatal编程技术网

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*。抛弃明星:)