Передача аргументов в селектор - PullRequest
1 голос
/ 04 октября 2010

Я работал над небольшой демонстрацией, и я написал функцию, которая принимает два строковых объекта и выглядит следующим образом

-(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"];
}

и я вызываю метод, называемый вызовом при касании кнопки внутри события

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

но я получаю сообщение об ошибке: нераспознанный селектор отправлен на экземпляр

подскажите, пожалуйста, где я не прав и как передать методы с аргументами в селектор. Спасибо

Ответы [ 2 ]

4 голосов
/ 04 октября 2010

Вам не хватает двоеточия.Попробуйте это:

[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 голос
/ 04 октября 2010

Вы неправильно выбрали селектор, он должен быть @selector(adding::)

Также в этом случае вам не нужно использовать performSelector:..., вы можете отправить сообщение напрямую: [self adding: @"num1" : @"num2"].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...