12

以下の抜粋では、

/*A ClassName with instanceMethod and ClassMethod  */

-(void)instanceMethod;

+(void)ClassMethod;

/*To call a instance method in background */

ClassName  class1obj = [ClassName alloc] init];

[class1obj performSelectorInBackground:@selector(instanceMethod) withObject:nil];

同様に、バックグラウンドで ClassMethod を呼び出す方法はperformSelectorInBackground?

できれば解説お願いします!みんな手をつないでください..

4

3 に答える 3

18

電話するだけ

[ClassName performSelectorInBackground:@selector(ClassMethod) withObject:nil];

クラスはそれ自体がオブジェクトであるため、これは機能します。

于 2012-11-28T04:46:02.870 に答える
2

selfクラス名の代わりに試してください

 [self performSelectorInBackground:@selector(methodTobeCalled) withObject:nil];

これがうまくいくことを願っています

于 2012-11-28T06:36:50.417 に答える
1

「バックグラウンドでコードを実行する方法」という一般的な問題を解決する GCD (Grand Central Dispatch) を検討する必要があります。クラス メソッドの呼び出し、インスタンス メソッドの呼び出し、サイコロの投げ方、ファイルへの書き込みなど、何でも構いません。

例:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    NSLog (@"This is code running in the background");
    [MyClass someClassMethod];
    [myInstance someMethodWithInt:1 bool:YES string:@"some string"];
    NSLog (@"Finished with the background code");
});

任意のコードで動作します。セレクターを使用する必要はありません。セレクターをバックグラウンドで実行するためだけにメソッドを記述する必要もありません。パラメーターを NSObject に変換する必要もありません (int または BOOL 引数で performSelector を使用することはできません)。Xcode は、これらのほとんどを自動的に入力します。

于 2014-03-18T12:02:35.450 に答える