2011-07-26 45 views
2

嘿,我正在尝试学习Objective-C和Cocoa Dev,但我在使用GUI创建Calculator App时遇到了问题。这里是我的两个文件我的AppController类NSInteger在一个函数上不能正常工作,但与其他人一起工作?

AppController.h

#import <Cocoa/Cocoa.h> 

@interface AppController : NSObject 
{ 
    IBOutlet NSTextField *textField1; 
    IBOutlet NSTextField *textField2; 
    IBOutlet NSTextField *resultsField; 
} 

- (IBAction)add:(id)sender; 
- (IBAction)multiply:(id)sender; 
- (IBAction)subtract:(id)sender; 
- (IBAction)divide:(id)sender; 

@end 

AppController.m

#import "AppController.h" 

int addx(int x, int y) 
{ 
    return (x+y); 
} 

int subtractx(int x, int y) 
{ 
    return (x-y); 
} 

int multiplyx(int x, int y) 
{ 
    return (x*y); 
} 

int dividex(int x, int y) 
{ 
    return (x/y); 
} 


@implementation AppController 

- (void) awakeFromNib 
{ 
    [textField1 setStringValue:@"Enter first value here"]; 
    [textField2 setStringValue:@"Enter second value here"]; 
    [resultsField setStringValue:@"Results come out here"]; 
} 

- (IBAction)add:(id)sender 
{ 
    NSInteger *value1; 
    value1 = [textField1 integerValue]; 

    NSInteger *value2; 
    value2 = [textField2 integerValue]; 

    [resultsField setIntegerValue:addx(value1, value2)]; 
} 

- (IBAction)subtract:(id)sender 
{ 
    NSInteger *value1; 
    value1 = [textField1 integerValue]; 

    NSInteger *value2; 
    value2 = [textField2 integerValue]; 

    [resultsField setIntegerValue:subtractx(value1, value2)]; 
} 

- (IBAction)multiply:(id)sender 
{ 
    NSInteger *value1; 
    value1 = [textField1 integerValue]; 

    NSInteger *value2; 
    value2 = [textField2 integerValue]; 

    [resultsField setIntegerValue:multiplyx(value1, value2)]; 
} 

-(IBAction)divide:(id)sender 
{ 
    NSInteger *value1; 
    value1 = [textField1 integerValue]; 

    NSInteger *value2; 
    value2 = [textField2 integerValue]; 

    [resultsField setIntegerValue:dividex(value1, value2)]; 
} 


@end 

一切工作正常,除了添加。出于某种原因程序崩溃,每当我尝试使用添加。所有其他功能都正常工作,但它们彼此完全相同。这是为什么发生?有人可以帮帮我吗?我提前谢谢你。

回答

6

您正在使用NSInteger*(指向NSInteger的指针)来存储应该只是NSInteger的变量。请尝试以下操作:

- (IBAction)add:(id)sender 
{ 
    NSInteger value1 = [textField1 integerValue]; 
    ... 
} 
+0

感谢它的完美运作!^_ ^ – BigFerdes

相关问题