动态调用带参数的方法

时间:2012-12-28 04:44:15

标签: objective-c ios

我知道可以通过这样的名称调用方法:

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

并且它将执行以下方法:

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

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

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

3 个答案:

答案 0 :(得分:2)

您可以使用-performSelector:withObject:

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

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

and -methodName:

-(void) methodName:(id)obj
{
    NSDictionary *dic = (NSDictionary *)obj;
    [self methodName:dic[@"name"] withValue:dic[@"value"]];
}

答案 1 :(得分:2)

我不知道我头脑中的确切语法,但您可以使用NSInvocation执行此操作。

答案 2 :(得分:0)

嗯,我不知道究竟需要什么,但从我的理解来看,它就像是:

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

在类的某个地方,将使用参数array 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;
}