基本的に、私はにデータのセットを持っていますNSDictionary
が、便宜上、いくつかNSArray
の異なる方法でデータをソートおよびフィルタリングしていくつかのデータを設定しています。データは異なるスレッド(ブロック)を介して受信されます。データストアを変更するときに、一度に1つのブロックのみが存在することを確認したいと思います。
今日の午後、ディスパッチキューを設定するのに苦労しましたが、それについての投稿にランダムに出くわし、@synchronized
自分がやりたいこととほぼ同じように見えました。
だから私が今持っているのは...
// a property on my object
@property (assign) dispatch_queue_t matchSortingQueue;
// in my object init
_sortingQueue = dispatch_queue_create("com.asdf.matchSortingQueue", NULL);
// then later...
- (void)sortArrayIntoLocalStore:(NSArray*)matches
{
dispatch_async(_sortingQueue, ^{
// do stuff...
});
}
そして私の質問は、これをすべて次のものに置き換えることができますか?
- (void)sortArrayIntoLocalStore:(NSArray*)matches
{
@synchronized (self) {
// do stuff...
};
}
...そしてとにかく2つの違いは何ですか?私は何を考慮すべきですか?