将参数传递给选择器

时间:2010-10-04 12:18:10

标签: objective-c iphone-sdk-3.0

我一直在做一个小型演示,我写了一个接受两个字符串对象的函数,看起来像这样

-(void)adding:(NSString*)num1 :(NSString*)num2
{
    num1 = first.text; //first is object of label
    num2 = second.text; //second is object of label

    int x= [num1 integerValue];
    int y = [num2 integerValue];

    int r = x+y;
    NSLog(@"%d",r);
}

我还有一个功能

-(void)calling
{
    [self performSelector:@selector(adding:)withObject:@"num1" withObject:@"num2"];
}

我正在调用名为call on on on touch in up in inside

的方法
[btn addTarget:self action:@selector(calling) forControlEvents:UIControlEventTouchUpInside];

但是我收到了一个名为unrecognized selector的错误,发送到实例

你能告诉我我错在哪里以及如何将带有参数的方法传递给选择器。 谢谢

2 个答案:

答案 0 :(得分:4)

你错过了冒号。试试这个:

[self performSelector:@selector(adding::)withObject:@"num1" withObject:@"num2"];

但是,在方法名称上包含未命名的参数是不好的形式,因为这样的错误会发生;)

我将您的方法重命名为

-(void)adding:(NSString*)num1 to:(NSString*)num

并且有这一行:

[self performSelector:@selector(adding:to:)withObject:@"num1" withObject:@"num2"];

答案 1 :(得分:1)

你的选择器错了,它应该是@selector(adding::)

同样在这种情况下,您无需使用performSelector:...,您可以直接发送消息:[self adding: @"num1" : @"num2"]