最近刚学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 怎么不见了
小白一个 大神们轻喷
Objective-C에서 alloc은 메모리 공간을 여는 것이고, init는 초기화하는 것입니다.
으아아아버튼을 클릭할 때마다
- (IBAction)enter
메서드에서 배열 피연산자 스택이 다시 초기화되고 새 요소가 추가됩니다.operandstack 배열을 속성으로 쓴 다음
- (void)viewDidLoad
메서드에서 한 번 초기화합니다.NSMutablearray의 초기화 코드가 클릭 이벤트에 배치되기 때문에 클릭할 때마다 NSMutablearray가 다시 초기화되는데, 이는 이전 요소가 손실된다는 의미이므로 당연히 요소는 하나만 남게 됩니다. NSMutablearray를 멤버 변수나 속성으로 사용하여 이 문제를 해결할 수 있습니다.