0

経験があるかもしれませんが、非スレッドセーフ変数へのアクセスは大きな頭痛の種です。iOS簡単な解決策の 1 つは、keyword を使用することです。これ @synchronizedによりNSLock、一意の 1 つのスレッドがデータにアクセスできるようになります。欠点は次のとおりです。

  1. ロックが多すぎると、特にメイン スレッドによって呼び出された場合に、アプリのパフォーマンスが大幅に低下します。

  2. ロジックが複雑になるとデッドロックが発生します。

上記の考慮事項に基づいて、シリアル キューを使用して処理することをお勧めします。各スレッド セーフの重要な操作はキューの最後に追加されます。これは優れたソリューションですが、問題は、すべてのアクセス インターフェイスを非同期スタイルで設計する必要があることです。次を参照してください。

-(id)objectForKey:(NSString *)key;

このクラスを呼び出す人々は、このように設計することに消極的ではありません。この分野の経験がある方は、共有して一緒に議論してください。

4

1 に答える 1