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

クラスのどこかで、メソッドは引数配列 fruit で呼び出されます。

-(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 に答える