在我的应用程序中,我performSelector
用来调用方法。我的应用程序中有三种不同的方法,我希望随机分配这三种方法中的一种来执行选择器。这是我的代码。
[self performSelector:@selector()];
这是我的三个方法..
-(void)Act1
{
}
-(void)Act2
{
}
-(void)Act3
{
}
现在我想每次随机分配一种方法给选择器。谁能指导我如何做到这一点。
在我的应用程序中,我performSelector
用来调用方法。我的应用程序中有三种不同的方法,我希望随机分配这三种方法中的一种来执行选择器。这是我的代码。
[self performSelector:@selector()];
这是我的三个方法..
-(void)Act1
{
}
-(void)Act2
{
}
-(void)Act3
{
}
现在我想每次随机分配一种方法给选择器。谁能指导我如何做到这一点。
这应该这样做:
int rand = (arc4random() % 3) + 1;
[self performSelector:NSSelectorFromString([NSString stringWithFormat:@"Act%d",rand])];
使用选择器数组,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
您可以将 3 个字符串放入表示您的方法的数组中,随机选择一个并使用 Nsselectorfromstring 来获取您的选择器