2013-02-05 4 views
-2

메신저 매우 객관적인 새로운 C 및 애플 리케이션을 만들고 정말 모르겠어요 왜 건물이 아니야. 여기에 실패 내 코드입니다 : 내가 초기화 오류가 어디 CalculatorViewController.m의 맨 끝에 CalculatorViewController.miOS 계산기 앱 빌드 오류

#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 

double result = [[self brain] performOperation:operation];입니다 '더블' 호환되지 않는 형식의 'void'표현 이 의미는 무엇을 의미합니까, 아니면이를 해결해야합니까?

+0

'CalculatorBrain.h '가 어떻게 보이는지, 특히'performOperation' 메시지의 서명을 보여주세요. – Andrew

답변

0

performOperation: 아마 선언됩니다. 이것은 무언가를 반환하지 않는다는 것을 의미합니다. 이중 무효 반환을 무효화하려고합니다.

문제는 헤더 파일 또는 구현 된 구현 파일에 포함됩니다. 메소드 서명에 void가 있는지 확인하십시오.

해결하려면 double 변수에 할당하지 말거나 performOperation:이 double 값을 반환하도록 허용하는 것이 더 바람직합니다.

+0

당신은 정확합니다. 나는 두 배로 무언가를 변경 한 후에 모든 것을 수정 한 것처럼 보이는 CalculatorBrain.h에 그것을 넣는 실수를했습니다! – BluGeni

0

CalculatorBrainperformOperation: 메서드의 반환 유형은 double 대신 void 유형입니다. 선언을보고 그 함수의 정의는 오류를 해결하기 위해 무엇을해야하는지 볼 수

당신이 볼 수 있듯이,이의 반환이 void입니다
- (void)performOperation:(NSString*)operation;