Objective Cにスレッドがありますか?もしそうなら、彼らはどのように宣言され使用されていますか?Objective-Cのスレッド化
Objective Cで誰かがマルチスレッドを知っている場合は、私と共有してください。
ありがとうございます。
Objective Cにスレッドがありますか?もしそうなら、彼らはどのように宣言され使用されていますか?Objective-Cのスレッド化
Objective Cで誰かがマルチスレッドを知っている場合は、私と共有してください。
ありがとうございます。
Cocoaを使って開発している場合(つまり、Macやiphoneの場合)、マルチスレッドに使用できるNSThread
クラスにアクセスできます。のGoogle検索でAPIが見つかります。
あなたが使っているようにそれを宣言することができます。
ターゲットとセレクタは、あなたが持つスレッドを開始したいオブジェクトとセレクタをされ、そして引数がセレクタに送信する引数ですNSThread *mythread = [[NSThread alloc] initWithTarget:target selector:selector object:argument];
。
[mythread start]を使用して開始します。
新しいスレッドでメソッドをスピンオフする簡単な方法は、使用することです。
+ (void)detachNewThreadSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anArgument
オンNSThread
。ガベージコレクションを実行していない場合は、独自の自動解放プールを設定する必要があります。
もう1つの簡単な方法は、メインスレッドをブロックしたくない場合だけ使用することです。あなたは他のものの間で複数のスレッド間で共有することができますので、あなたもあなたの自由なロックを与えることができNSOperation
を見てみる必要があるの後にある並行処理の種類に応じて、NSObject
上
- (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg
。
またMacResearchのドリュー・マコーマックの記事を見て、この例を参照するにはNSOperation
に見ることができます。
detachNewThreadSelectorのようなもので遠くに行く前に:Appleの公式ドキュメントをチェックしてください。オプション(操作キュー、ディスパッチキューなど)の概要については、Concurrency Programming Guideがあります。下位レベルの(そしてあまり推奨されない)スレッディングについては、Threading Programming Guideがあります。
あなたは、Appleが最初に話す内容を読まずにスレッドを回転させたいのは間違いありません。彼らはGCDのようなもので多くの作業をして、並行プログラムを書くのをより簡単で安全にしました。
はい客観C.におけるスレッドの概念が存在しており、マルチスレッドを実現するために、複数の方法が客観Cである
1>NSThread
[NSThread detachNewThreadSelector:@selector(startTheBackgroundJob) toTarget:self withObject:nil];
これはで新しいスレッドを作成します。バックグラウンド。あなたのメインスレッドから。performSelector
に[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];
を使用して
2>を使用すると、バックグラウンドスレッドからこれを呼び出す場合...あなたはまた、作成されます
[self performSelectorInBackground:@selector(abc:) withObject:obj];
を使用することができ、あなたのメインスレッド上でUIのタスクを実行しますバックグラウンドスレッド。 NSoperation GCDバックグラウンドスレッドで、それが完了しています一度
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self callWebService];
dispatch_async(dispatch_get_main_queue(), ^{
[self updateUI];
});
});
ウィルcallWebService
を使用して
4>を使用して
3>。メインスレッドではupdateUI
になります。 More about GCD
これは、iOSで使用されているマルチスレッドのほとんどすべての方法です。お役に立てれば。
NSOperationはiOS 4.0以降のみをサポートしています。 –