質問 1: ポインターの代わりに、変更される値 (この場合は self.display.text) の永続的なコピーをインスタンス変数に作成させるにはどうすればよいですか?
質問 2: 私が問題を述べた方法において、私の用語は正しいですか?
Obj-c を使い始めて数週間になりますが、この問題に遭遇しました。問題の一部は、正しい用語を知らないことにあると思います (そのため、解決策を探すのが難しい)。だからここに行く:
This is a basic calculator program:
1)User inputs their first number
2)User presses an action (+, -, *, /)
2a) first inputted number is saved; display is reset
3)User inputs second number
4)User presses enter
4a) second inputed number is saved; action is performed on the first and second number
This declares my CalculatorViewController.h
@interface CalculatorViewController : UIViewController
@property double firstNumber, secondNumber, result;
@property int actionType;
@property (weak, nonatomic) IBOutlet UILabel *display;
@property BOOL userIsInTheMiddleOfEnteringANumber;
@end
Implementation here...
// method for when someone clicks an action item on the calculator (such as +, -, *, /)
- (IBAction)pressedAction:(UIButton *)sender {
self.firstNumber = [self.display.text doubleValue];
(action type is set here)
NSLog(@"Action Type: %i", self.actionType);
NSLog(@"FN: %f, SN: %f", self.firstNumber, self.secondNumber);
}
// method for when someone clicks enter (and therefore firstNumber and secondNumber are set
- (IBAction)pressedEnter {
self.secondNumber = [self.display.text doubleValue];
NSLog(@"f: %f, s: %f", self.firstNumber, self.secondNumber);
// should do the given action to the self.firstNumber, self.secondNumber here
}
ここに私の問題があります: firstNumber は、割り当て時の永続的なコピーではなく、self.display.text (画面上のラベル/出力) へのポインター (用語?) として設定されています。したがって、誰かがプラスをクリックした後に数字が変わると、より多くの数字が入力されているため、firstNumber が変更されています。
助けてくれてありがとう!ほんとうにありがとう!