1

在我的应用程序中,我performSelector用来调用方法。我的应用程序中有三种不同的方法,我希望随机分配这三种方法中的一种来执行选择器。这是我的代码。

[self performSelector:@selector()];

这是我的三个方法..

-(void)Act1
{
}

-(void)Act2
{
}

-(void)Act3
{
}

现在我想每次随机分配一种方法给选择器。谁能指导我如何做到这一点。

4

3 回答 3

4

这应该这样做:

int rand = (arc4random() % 3) + 1;
[self performSelector:NSSelectorFromString([NSString stringWithFormat:@"Act%d",rand])];
于 2012-06-09T14:31:22.733 回答
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
于 2012-06-09T14:32:36.770 回答
3

您可以将 3 个字符串放入表示您的方法的数组中,随机选择一个并使用 Nsselectorfromstring 来获取您的选择器

于 2012-06-09T14:27:27.083 回答