ios - OC中一个关于数组的问题。
天蓬老师
天蓬老师 2017-04-18 09:51:32
0
2
387

最近刚学iOS不久 跟着斯坦福上学着做计算器app

当用数组把操作数存入到栈中 发现数组中永远只有一个元素


@interface ViewController ()
@property (strong, nonatomic) IBOutlet UILabel *display;
@end

bool userIsInTheMiddleOfTyping = FALSE;
@implementation ViewController
- (IBAction)appendDigit:(UIButton *)sender {
    if(userIsInTheMiddleOfTyping){
    NSString *digit = sender.currentTitle;
    _display.text = [_display.text stringByAppendingString:digit];
    }else{
        _display.text = sender.currentTitle;
        userIsInTheMiddleOfTyping=TRUE;
    }
    
}

- (IBAction)enter {
    userIsInTheMiddleOfTyping = FALSE;
    NSMutableArray *operandstack = [[NSMutableArray alloc]init];
    [operandstack addObject:_display.text];
    NSLog(@"operandstack = %li", operandstack.count);
    NSLog(@"operandstack = %@", operandstack);

}

当点击一个enter按钮的时候 数组里就会加一个元素 但是情况是数组里永远只有一个元素

第一次点击后NSLog输出数组的count和内容的时候

2017-01-15 08:47:50.620 MYCalculator[32235:2359081] operandstack = 1
2017-01-15 08:47:50.622 MYCalculator[32235:2359081] operandstack = (
    3
)

之后第二次 第三次 都是显示有一个元素 永远是Label上那个最新的元素

2017-01-15 08:47:50.620 MYCalculator[32235:2359081] operandstack = 1
2017-01-15 08:47:50.622 MYCalculator[32235:2359081] operandstack = (
    3
)
2017-01-15 08:52:20.332 MYCalculator[32235:2359081] operandstack = 1
2017-01-15 08:52:20.334 MYCalculator[32235:2359081] operandstack = (
    236
) 

我就想知道之前加入数组的3 怎么不见了

小白一个 大神们轻喷

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

membalas semua(2)
Ty80

Dalam Objective-C, alloc adalah untuk membuka ruang memori, dan init adalah untuk memulakan.
Setiap kali anda mengklik butang, timbunan operan tatasusunan dimulakan semula dalam kaedah - (IBAction)enter dan kemudian elemen baharu ditambah.
Tulis tatasusunan operandstack sebagai harta, dan kemudian mulakannya sekali dalam kaedah - (void)viewDidLoad:

- (void)viewDidLoad  {
    self.operandstack = [NSMutableArray array];
}
伊谢尔伦

Oleh kerana kod permulaan NSMutablearray diletakkan dalam acara klik, NSMutablearray dimulakan semula setiap kali ia diklik, yang bermaksud bahawa elemen sebelumnya hilang, jadi secara semula jadi, hanya ada satu elemen. Anda boleh menggunakan NSMutablearray sebagai pembolehubah ahli atau atribut untuk menyelesaikan masalah ini.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan