2010-10-04 104 views
1

我一直在一個小的演示,我寫了接受兩個字符串對象,看起來像這樣參數傳遞給選擇

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

但我得到一個錯誤調用ed無法識別的選擇器發送到實例

你能告訴我我錯在哪裏以及如何將參數傳遞給選擇器。 謝謝

回答

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

你讓你的選擇錯了,應該是@selector(adding::)

同樣在這種情況下,您不需要使用performSelector:...,您可以直接發送消息:[self adding: @"num1" : @"num2"]