0

そのため、電卓アプリケーションで作業していますが、現在、コードが正しく実行されていません。何が悪いのかはわかっていますが、どうすれば修正できるのかわかりません。現在、追加ボタンを押すと、現在のコードを含むViewController.mがあります。

#import "ViewController.h"
#import "CalcLogic.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *display;
@property (weak, nonatomic) IBOutlet UILabel *lastOperation;
@property (strong, nonatomic) CalcLogic* logic;

@end

@implementation ViewController
double result = 0;
//Last operation entered into the calculator
NSString* lastEntered;
@synthesize logic;

-(IBAction)numPressed:(UIButton *)sender{
    BOOL hasBeenCleared = [self.lastOperation.text isEqualToString:@"Clear"];

    if ([self.display.text isEqualToString:@"0."]) {
        self.display.text = sender.currentTitle;;
        self.lastOperation.text = sender.currentTitle;;
        [self.logic pushNumber:[sender.currentTitle doubleValue]];
    }
    else{
        self.display.text = [self.display.text stringByAppendingString:sender.currentTitle];
        if (self.lastOperation.text.length > 1 && hasBeenCleared != TRUE) {
            self.lastOperation.text = [self.lastOperation.text stringByAppendingString:sender.currentTitle];
        }
        else {
            self.lastOperation.text = sender.currentTitle;
        }
        [self.logic pushNumber:[sender.currentTitle doubleValue]];
    }
}

-(IBAction)clearPressed:(UIButton *)sender{
    self.display.text = @"0.";
    self.lastOperation.text = @"Clear";
    [self.logic clearStack];
    result = 0;
}

-(IBAction)operation:(UIButton *)sender{
    [logic pushOperation:sender.currentTitle];
    NSString* resultString = [NSString stringWithFormat:@"%g", result];
    self.display.text = resultString;
    if ([self.lastOperation.text isEqualToString:@"Clear"]) {
        self.lastOperation.text = @"";
        self.lastOperation.text = [self.lastOperation.text stringByAppendingString:sender.currentTitle];
    }
    else{
        self.lastOperation.text = [self.lastOperation.text stringByAppendingString:sender.currentTitle];
    }
}

-(IBAction)equalHit:(UIButton *)sender{
    result = [self.logic performOperation];
    self.display.text = [NSString stringWithFormat:@"%g", result];

}

私の問題は、オブジェクトを配列にプッシュおよびポップすることです。配列はにあり、logicの2つの配列の1つに数値をプッシュしlogic、オブジェクトの別の配列に演算子をプッシュしようとしています。ただし、コンソールをチェックインするときに何もプッシュされていないため、何か間違ったことをしているに違いありません(私が知る限り)。私はまだこの言語に不慣れで、Javaパックグラウンドから来ています。

4

1 に答える 1

1

logicコードのどこにもalloc/initを割り当てていないようです。この行は、おそらくviewDidLoadまたは他の初期化関数で必要です。

logic = [[CalcLogic alloc] init];
于 2013-02-27T18:22:30.283 に答える