iOS Calculator app构建错误

时间:2013-02-05 21:00:31

标签: ios objective-c

我对目标c和制作应用程序非常新,并且不确定为什么这不构建。这是我失败的代码: CalculatorViewController.m

#import "CalculatorViewController.h"

@interface CalculatorViewController ()

@end

@implementation CalculatorViewController
-(CalculatorBrain *)brain
{
    if (!brain){
        brain = [[CalculatorBrain alloc] init];
    }
    return brain;
}

-(IBAction)digitPressed:(UIButton *)sender;
{
    NSString *digit = [[sender titleLabel] text];
    if (userIsInTheMiddleOfTypingANumber){
        [display setText:[[display text] stringByAppendingString:digit]];
    } else{
            [display setText:digit];
        userIsInTheMiddleOfTypingANumber = YES;
        }

}
-(IBAction)operationPressed:(UIButton *)sender;
{
    if (userIsInTheMiddleOfTypingANumber){
        [[self brain] setOperand:[[display text] doubleValue]];
        userIsInTheMiddleOfTypingANumber = NO;
    }
    NSString *operation = [[sender titleLabel] text];
    double result = [[self brain] performOperation:operation];
    [display setText:[NSString stringWithFormat:@"%g", result]];
}

@end

和CalculatorViewController.h

   #import <UIKit/UIKit.h>
#import "CalculatorBrain.h"

@interface CalculatorViewController : UIViewController{
    IBOutlet UILabel *display;
    CalculatorBrain *brain;
    BOOL userIsInTheMiddleOfTypingANumber;
}

-(IBAction)digitPressed:(UIButton *)sender;
-(IBAction)operationPressed:(UIButton *)sender;


@end
在CalculatorViewController.m的最末端的

double result = [[self brain] performOperation:operation];是我收到错误的初始化'double',其表达式为不兼容类型'void' 这是什么意思或我应该在哪里解决这个问题?

2 个答案:

答案 0 :(得分:0)

这意味着CalculatorBrain的{​​{1}}方法的返回类型属于performOperation:,而不是void。查看该函数的声明和定义,以了解修复错误需要执行的操作

答案 1 :(得分:0)

performOperation:可能会被声明为

- (void)performOperation:(NSString*)operation;

如您所见,返回的是void。这意味着它不返回任何内容,因此,您尝试将void返回分配给double,这是无效的。

问题可能在头文件中,也可能在实现它的实现文件中。查看方法签名以查看它是否包含void。

要修复,要么不分配给双变量,要么(更优选我假设)允许performOperation:返回双精度值。