2

我知道可以像这样按名称调用方法:

 NSString *string =@"methodName";
[self performSelector:NSSelectorFromString(string)];

并且它将执行以下方法:

-(void)methodName
   {
              // todo:.....
   }

我想知道如何调用具有以下参数的方法:

-(void)methodName:(NSString *)_name :withValue (NSString *) value
     {
              // todo:.....
     }
4

3 回答 3

2

您可以使用 -performSelector:withObject:

NSDictionary *dic = @{@"name":@"stringName",@"value":@"12"};

NSString *string =@"methodName:";
[self performSelector:NSSelectorFromString(string) withObject:dic];

在 -methodName 中:

-(void) methodName:(id)obj
{
    NSDictionary *dic = (NSDictionary *)obj;
    [self methodName:dic[@"name"] withValue:dic[@"value"]];
}
于 2012-12-28T04:49:58.650 回答
2

我不知道确切的语法,但是您可以使用NSInvocation来做到这一点。

于 2012-12-28T05:06:17.273 回答
0

好吧,我不知道到底需要什么,但据我了解,它类似于:

NSArray *fruits = [NSArray arrayWithObjects:@"Apple", @"Mango", nil]; 
NSArray *drinks = [NSArray arrayWithObjects:@"Drink1", @"Drink2",nil];
[self serveOrdersWith:fruits andDrinks:drinks];

在类中的某处,将使用参数数组 fruits 调用该方法,即

-(NSArray*)serveOrdersWith :(NSArray*)array1 andDrinks:(NSArray*)array2{
     //Your code here but I will finish with this only
    NSArray *orderArray;
    [orderArray addObject:array1];
    [orderArray addObject:array2];
    return orderArray;
}
于 2012-12-28T05:13:22.060 回答