如何在方法内创建动态命名选择器

时间:2012-10-22 16:10:23

标签: objective-c methods arguments selector

我有一个客观的C方法,它传入一个字符串和一个整数作为参数。在这个方法的内部,我想使用一个选择器 - 其名称基于我传入的整数值。例如,如果整数参数是5,我希望选择器被命名为“buildXArrayIndex5”或者如果整数参数是3,我希望选择器命名为“buildXarrayIndex3”。我真的不知道如何做到这一点,或者是否可能/合理。我是目标C的新手,所以我写出了我想要发生的事情,但它不是工作/有效的代码。但这是:

- (void) startBuildingXArray:(int)senderID:(NSString *)moveTrackerObject {

NSString *methodNamePrefix = @"buildXArrayIndex";

NSString *realMethodName = [[NSString alloc]initWithFormat:@"%@%d",methodNamePrefix,   
senderID];

SEL realSelector = NSSelectorFromString(realMethodName);

[self realSelector: moveTrackerObject];

}

在界面中,我声明了SEL realSelector;但我收到一个错误,没有运行这个说“没有可见的@interface声明选择器realSelector”。但我确信这不是这段代码的唯一问题。谁能告诉我如何为此创建正确的代码或突出更好的方法?

1 个答案:

答案 0 :(得分:3)

您需要使用-performSelector:方法调用您的选择器,例如:

[self performSelector:realSelector];

此外,如果要调用接受参数的方法,则需要在选择器名称中添加冒号:

NSString *realMethodName = [[NSString alloc]initWithFormat:@"%@%d:",methodNamePrefix, senderID];

并称之为:

[self performSelector:realSelector withObject:moveTrackerObject];