【问题标题】:NSInteger not working correctly on one function but works with others?NSInteger 不能在一个函数上正常工作,但可以与其他函数一起工作?
【发布时间】:2011-07-27 06:43:23
【问题描述】:

嘿,我正在尝试学习 Objective-C 和 Cocoa Dev,但是在制作带有 GUI 的计算器应用程序时遇到了问题。这是我的 AppController 类的两个文件

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

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

【问题讨论】:

    标签: objective-c cocoa


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-13
      • 2016-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多