バックグラウンドでメソッドを繰り返し呼び出すアプリケーションがあります。私はステップの下に、次のことで、これを実装:NSOperationQueueとDispatch Queueを繰り返しタスクを実行するNSThreadの代わりに使用
- は、バックグラウンドスレッドを作成し、
- は、スレッドのスリープ・メソッドと呼ばれる
- 、および
- 、作成されたスレッド上で、適切なメソッドを呼び出し、再び以前に呼び出されたと呼ばれます方法。以下は
は、私が使用するコードです:
- (void) applicationDidFinishLaunching:(NSNotification *)notification
[NSApplication detachDrawingThread:@selector(refreshUserIdPassword) toTarget:self withObject:nil];
}
-(void)refreshUserIdPassword
{
[self getAllUserIdsPasswordsContinousely];
[NSThread sleepForTimeInterval:180];
[self refreshUserIdPassword];
}
私はNSThreadは、バックグラウンドタスクを実行するための最良の方法ではないことを読んだことがある、とのようなココアで提供される他のクラスが存在する - NSOperationQueueとGCDは、非同期タスクを実行するためにNSThreadより優先されるべきです。だから私は上記の指定された機能を代替クラスを使って実装しようとしています。
問題がある - 私は これらのクラスを使用して非同期タスクを実行することができていますけれども、私はこれらのクラスを使用して(私の 場合のように)繰り返しのタスクを実行することができません。
誰かがこれについて少し光を当てて、私を正しい方向に導くことができますか?
「NSDispatchQueue」という名前のクラスはありません。 Grand Central Dispatch(GCD)を考えているかもしれませんが、オブジェクト指向のAPIではなくCの関数APIを使用しています。 Mac OS X 10.6以降、「NSOperation」はGCDをフードの下で使用します。 –
ありがとうRob ...私の質問の用語を修正しました。 – Devarshi