1

私のアプリケーションでは、performSelectorメソッドを呼び出すために使用します。私のアプリケーションには 3 つの異なるメソッドがあります。これら 3 つのメソッドのいずれかをランダムに割り当てて、セレクターを実行したいと考えています。これが私のコードです。

[self performSelector:@selector()];

これが私の3つの方法です..

-(void)Act1
{
}

-(void)Act2
{
}

-(void)Act3
{
}

今度は、毎回 1 つのメソッドをランダムにセレクターに割り当てたいと思います。これを行う方法を教えてください。

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 つの文字列を配列に入れ、ランダムに 1 つを選択し、Nsselectorfromstring を使用してセレクターを取得できます。

于 2012-06-09T14:27:27.083 に答える