3

これが私のコードです:

- (IBAction)NextTouched:(id)sender {
    NSLog(@"Index = %i", index);
    if([project getCount]>(index++)) {
        [self setUI:index];
    }
}

私の .h ファイルで宣言されているように、インデックスは整数です。

@property (nonatomic) int *index;

しかし、ボタンをクリックするたびに、整数が 4 ずつ増加しているとログに記録されます。理由を教えてください。

4

2 に答える 2

12

4 ずつ上がっているのindexは、ポインタだからです。ポインターをインクリメントすると、その値は、ポインターが指すデータ型 (この場合intは 4 バイト) のサイズだけ増加します。

(または他のコレクションクラス)へのインデックスindexのように見える場合、問題を解決するのではなくNSArray、それを作成したいと思います。メソッドから返される型である のように、符号なしにすることをお勧めします。intint *NSUIntegercount

ifまた、テストが以前の値ではなく、新しくインクリメントされた値を使用するように、postfix-increment ではなく prefix-increment を使用することをお勧めします。

于 2012-08-01T09:33:03.160 に答える
0

index をポインターではなく整数変数として定義するだけで、値をインクリメントする前に出力したい場合は index++ を使用し、それ以外の場合は ++index を使用して値をインクリメントしてから出力します。

于 2012-08-01T09:50:33.767 に答える