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

最近刚学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 怎么不见了

小白一个 大神们轻喷

天蓬老师
天蓬老师

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

répondre à tous(2)
Ty80

En Objective-C, alloc consiste à ouvrir un espace mémoire et init à initialiser.
A chaque fois que vous cliquez sur le bouton, la pile d'opérandes du tableau est réinitialisée dans la méthode - (IBAction)enter puis de nouveaux éléments sont ajoutés.
Écrivez le tableau operandstack en tant que propriété, puis initialisez-le une fois dans la méthode - (void)viewDidLoad :

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

Comme le code d'initialisation de NSMutablearray est placé dans l'événement click, NSMutablearray est réinitialisé à chaque fois qu'on clique sur lui, ce qui signifie que les éléments précédents sont perdus, donc naturellement, il n'y a qu'un seul élément. Vous pouvez utiliser NSMutablearray comme variable membre ou attribut pour résoudre ce problème.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal