2010-10-04 5 views
1

je travaille sur une petite démo et je l'ai écrit une fonction qui accepte deux objets de chaîne et ressemble à cePassage d'arguments au sélecteur

-(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); 
} 

am ayant une fonction plus

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

et je suis appeler la méthode nommée appelant sur le bouton retoucher à l'intérieur de l'événement

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

mais je reçois un appel d'erreur ed sélecteur non reconnu envoyé à l'instance

pouvez-vous s'il vous plaît dites-moi où je me trompe et comment passer des méthodes avec des arguments à sélecteur. Merci

Répondre

4

Il vous manque un deux-points. Essayez ceci:

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

Cependant, il est mal vu d'avoir des paramètres sans nom, sur vos noms de méthode parce que des erreurs comme cela arrive;)

Je aurait Renommez votre méthode pour être

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

et avez cette ligne:

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

Vous avez eu le mauvais choix, ça devrait être @selector(adding::)

Également dans ce cas, vous n'avez pas besoin d'utiliser performSelector:..., vous pouvez envoyer le message directement: [self adding: @"num1" : @"num2"].

Questions connexes