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打印0和第二个打印4。谁能解释为什么?它旨在打印0第一个,因为该变量的目的是作为设置标签的计数器。

4

2 回答 2

6

听起来像是_sliderTag一个指向大小为 4 字节的类型的指针。将 1 加到一个指针上会增加它所指向的类型的大小。以下是说明差异的两个示例:

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 是 int 或 Integer 或 int 而不是 Integer* 或 int*,其次,不要使用 %i 打印它,而是使用 %d

于 2013-04-23T20:58:48.477 回答