简单的函数让我在Objective-C上崩溃

时间:2011-09-30 12:12:42

标签: iphone objective-c ios

我正在编写一个简单的计算器,我想为所有4个算术按钮创建一个独特的函数。我来到这里:

-(IBAction)simbolo1:(UIButton*)sender{

    if (isNumeric(campo1.text)) {

        NSString *str=campo1.text;
        campo2.text=str;
        int S=1;
        NSString *cmp1 = [NSString stringWithFormat:@"%d", S];
        sinal.text=cmp1;
        campo1.text=@"";

    } else {

        campo1.text=@"Only numeric values";
    }
}

但是,出于某种原因,我无法让它发挥作用。每次我点击按钮,我都会崩溃。 所以,我检查错误的确切位置并删除了整个代码:

-(void)simbolo1:(UIButton*)sender{

    campo1.text=@"Only numeric values";
}

这些代码行似乎给了我与之前相同的错误

我在这个文件上找到了一个'green:marker':

#import <UIKit/UIKit.h>

int main(int argc, char *argv[]){
     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
     int retVal = UIApplicationMain(argc, argv, nil, nil);   <--------- This line right here
     [pool release];
     return retVal;
}

EDIT --------------- 在debud控制台上我得到了这个:

2011-09-30 09:17:14.319 Teste iPhone[28432:fb03] Applications are expected to have a root view controller at the end of application launch
2011-09-30 09:17:21.714 Teste iPhone[28432:fb03] -[Teste_iPhoneAppDelegate simbolo1]: unrecognized selector sent to instance 0x6b7c2d0
2011-09-30 09:17:21.715 Teste iPhone[28432:fb03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Teste_iPhoneAppDelegate simbolo1]: unrecognized selector sent to instance 0x6b7c2d0'
*** First throw call stack:
(0x166d062 0x17fed0a 0x166ecfd 0x15d3f10 0x15d3cf2 0x166eed9 0x16eb2 0x16e4a 0xbc3e6 0xbc8af 0xbbb6e 0x3c2a0 0x3c4c6 0x22c74 0x16399 0x1557fa9 0x16411d5 0x15a6042 0x15a492a 0x15a3dd4 0x15a3ceb 0x1556879 0x155693e 0x1438b 0x272d 0x26a5)
terminate called throwing an exception(gdb) 

2 个答案:

答案 0 :(得分:2)

没有足够的信息可以帮助您。您需要查看调试器控制台并向我们显示错误和堆栈。

但是,我会猜测并说你没有将campo1 IBOutlet连接到Interface Builder中的UIView,而且它没有。要修复,请在Interface Builder中编辑视图(或在Xcode 4中,只需单击它),然后将campo1插座旁边的小圆圈(在“连接”选项卡中)拖到要与其对应的UIView组件上。 / p>

如果不是这样,则错误不在此处,但可能是由程序中的其他内容引起的。

[看到控制台后编辑]:您的连接看起来配置错误。为什么要尝试将simbolo1选择器发送到Teste_iPhoneAppDelegate?它应该将它发送到您的ViewController。您是否在Interface Builder中使用连接(特别是委托者)或类?

答案 1 :(得分:0)

在UITextField中设置文本

[campo1 setText:@"Only numeric values"];

并且也不要忘记将IBOutlet UITextField* campo1;链接到XCode IB中正确的UITextField