在我的应用程序中,我使用performSelector
来调用方法。我的应用程序中有三种不同的方法,我想随机分配这三种方法中的一种来执行选择器。这是我的代码。
[self performSelector:@selector()];
这是我的三种方法..
-(void)Act1
{
}
-(void)Act2
{
}
-(void)Act3
{
}
现在我想将每个方法随机分配给选择器。任何人都可以指导我如何做到这一点。
答案 0 :(得分:4)
这应该这样做:
int rand = (arc4random() % 3) + 1;
[self performSelector:NSSelectorFromString([NSString stringWithFormat:@"Act%d",rand])];
答案 1 :(得分:4)
使用选择器数组,SEL
是他们的类型。
SEL mySelectors[3] = { @selector(Act1), @selector(Act2), @selector(Act3) };
[self performSelector:mySelectors[rand() % 3]];
您可能希望取消ARC发出的有关潜在内存泄漏的警告,因为您的方法是void
,所以它是安全的。使用objc_msgSend
或包装代码如下:
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[self performSelector:mySelectors[rand() % 3]];
#pragma clang diagnostic pop
答案 2 :(得分:3)
您可以在表示方法的数组中放入3个字符串,随机选择一个并使用Nsselectorfromstring来获取选择器