マルチスレッドに関する ios sdk に関する記事をいくつか読みましたが、それでも問題に対する答えが見つかりませんでした。 、他のスレッドはその変更された値を必要とします。では、1 つのスレッドのプロパティまたはフィールドの値を変更して、すべてのスレッドで変更されるようにするにはどうすればよいでしょうか?
1 に答える
3
単一のオブジェクトのプロパティを変更すると、基本的に「すべてのスレッドの」値が変更されます。自分で作成しない限り、オブジェクトのスレッド固有のコピーはありません。
マルチスレッド プログラムの場合、主な課題は、2 つのスレッドが同時に同じメモリ (この場合はプロパティ) にアクセス/書き込みしようとしていないことを確認することです。問題のプロパティに対してこれを行う最も簡単な方法 (ただし、必ずしも最も効率的または確実な方法とは限りません) は、プロパティ宣言から「非アトミック」属性を除外することです。@synthesize
(編集:これは、プロパティを実装するために使用していることを前提としており、@dynamic
カスタムのオーバーライドゲッターまたはセッターもありません。)
マルチスレッドは、ここで取り上げるには少し大きなトピックですが、詳細については、Apple のドキュメントから始めるのが良いでしょう: http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Multithreading/はじめに/はじめに.html
于 2012-04-11T22:55:28.707 に答える