1

私はObjective-cに非常に慣れていないため、おそらく非常に簡単に解決できますが、どこにも答えが見つかりませんでした....

ユーザーがボタンをクリックするたびに変数に+1を追加しようとしていますが、+1を追加する代わりに+4を追加します

- (IBAction)addNewSet:(UIButton *)sender {
    NSLog(@"%i",_sliderTag);
    _sliderTag += 1;
   NSLog(@"ADD NEW    %i",_sliderTag);
}

_sliderTagはすでにNSInteger:

@property (nonatomic,assign) NSInteger* sliderTag;

追加が実行された後の最初のNSLog印刷と2番目の印刷。誰でも理由を説明できますか?この変数のポイントはタグを設定するためのカウンターであるため、最初のものを出力することを意図しています。040

4

2 に答える 2

6

_sliderTagサイズが4バイトの型へのポインタのように聞こえます。ポインターに 1 を追加すると、ポインターが指す型のサイズだけインクリメントされます。違いを示す 2 つの例を次に示します。

NSInteger foo = 0;
foo += 1;
NSLog(@"result: foo = %d", foo);    // result: foo = 1

NSInteger *bar = 0;                 // note the '*'
bar += 1;
NSLog(@"result: bar = %d", bar);    // result: bar = 4
于 2013-04-23T20:58:26.077 に答える
1

最初に、_sliderTag が Integer* または int* ではなく、int または Integer または int であることを確認してください。次に、%i ではなく %d で出力してください。

于 2013-04-23T20:58:48.477 に答える