2011-07-26 13 views
2

こんにちはObjective-CとCocoa Devを学ぼうとしていますが、Calculator AppをGUIで作成する際に問題があります。ここに私の2つのファイルは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 

すべてが追加除いて正常に動作します私のAppControllerクラスのためのものです。何らかの理由でAddを使用しようとするとプログラムがクラッシュします。他のすべての関数は正常に動作しますが、互いに同じです。なぜこうなった?誰か助けてくれますか?私は事前に感謝します。

答えて

6

単純にNSIntegerの変数を格納するためにNSInteger*(NSIntegerへのポインタ)を使用しています。以下を試してください:

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

ありがとうございました。^_ ^ – BigFerdes

関連する問題