2012-11-28 10 views
11

を使用してバックグラウンドで、コールクラスメソッド以下の抜粋ではObjective Cの

/*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]; 

同様に、どのようにperformSelectorInBackgroundを使用してバックグラウンドでです。ClassMethodを呼び出すには?

可能であれば、説明してください! してください人は

答えて

18

ちょうどクラスは、オブジェクト自体であるため、これは動作します

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

を呼び出す。..手を組みます。

+1

魔法のように! – itechnician

2

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

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

の希望のためにこのウィル仕事あなた

1
あなたはでコードを実行する方法の一般的な問題」を解決GCD(グランドセントラル派遣)、をご覧ください

背景。クラスメソッドを呼び出すか、インスタンスメソッドを呼び出すか、サイコロを投げるか、ファイルに書き込むかどうかは関係ありません。

例:

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にパラメータを渡す必要はありません(performSelectorをintまたはBOOL引数で使用することはできません)。 Xcodeはこれの大部分を自動的に記入します。

関連する問題