目标c-iOS计算器应用程序构建错误



我对目标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];是我使用不兼容类型"void"的表达式初始化"double"时出错的地方这意味着什么,或者我应该在哪里解决这个问题?

performOperation:可能会被声明为

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

正如您所看到的,这个返回是void。这意味着它不会返回任何内容,因此,您试图将void返回分配给double,这是无效的。

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

要解决这个问题,要么不给双变量赋值,要么(我认为更可取的是)允许performOperation:返回双值。

这意味着CalculatorBrainperformOperation:方法的返回类型是void而不是double。查看该函数的声明和定义,了解需要做些什么来修复错误