如何使用执行选择器选择随机方法?

时间:2012-06-09 14:23:25

标签: iphone objective-c ios random performselector

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

[self performSelector:@selector()];

这是我的三种方法..

-(void)Act1
{
}

-(void)Act2
{
}

-(void)Act3
{
}

现在我想将每个方法随机分配给选择器。任何人都可以指导我如何做到这一点。

3 个答案:

答案 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来获取选择器