こんにちは、すべての数値を保持する programStack と呼ばれる NSMutableArray から整数値を取得しようとしています。このメソッドは元に戻すメソッドなので、元に戻すを押すと、スタックの最後のアイテムが消去され、前のオプションが返されます。数値を取得しようとすると、メソッド undoVariable は返されたときに文字列の正しい値を持っていますが、表示された後に間違った値を取得します。例は、配列に 2、3 を持っていることです。UndoVariable で 3 を消去すると文字列が 2 と表示され、self.display.text を使用して表示すると 1.57539e-302 と表示されます。これはポインタアドレスでしょうか?これがコードです。
- (IBAction)undoPressed {
NSString* string = self.display.text;
if(userIsInTheMiddleOfEnteringANumber){
if([self.display.text length])
string = [string substringToIndex:([string length]-1)];
} else {
string = [NSString stringWithFormat:@"%g",[self.brain undoVariable]];
NSLog(@"string is %@", string);
}
self.display.text = string;
}
-(NSString*) undoVariable{
if(self.programStack)
[self.programStack removeLastObject];
if(self.programStack){
NSString* string = @"";
string = [string stringByAppendingString: [self.programStack lastObject]];
NSLog(@"string = %@", string);
NSLog(@"self.display.text = %@", [self.programStack lastObject]);
return string;
}