我对目标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'
这是什么意思或我应该在哪里解决这个问题?
答案 0 :(得分:0)
这意味着CalculatorBrain
的{{1}}方法的返回类型属于performOperation:
,而不是void
。查看该函数的声明和定义,以了解修复错误需要执行的操作
答案 1 :(得分:0)
performOperation:
可能会被声明为
- (void)performOperation:(NSString*)operation;
如您所见,返回的是void
。这意味着它不返回任何内容,因此,您尝试将void返回分配给double,这是无效的。
问题可能在头文件中,也可能在实现它的实现文件中。查看方法签名以查看它是否包含void。
要修复,要么不分配给双变量,要么(更优选我假设)允许performOperation:
返回双精度值。