経験があるかもしれませんが、非スレッドセーフ変数へのアクセスは大きな頭痛の種です。iOS
簡単な解決策の 1 つは、keyword を使用することです。これ @synchronized
によりNSLock
、一意の 1 つのスレッドがデータにアクセスできるようになります。欠点は次のとおりです。
ロックが多すぎると、特にメイン スレッドによって呼び出された場合に、アプリのパフォーマンスが大幅に低下します。
ロジックが複雑になるとデッドロックが発生します。
上記の考慮事項に基づいて、シリアル キューを使用して処理することをお勧めします。各スレッド セーフの重要な操作はキューの最後に追加されます。これは優れたソリューションですが、問題は、すべてのアクセス インターフェイスを非同期スタイルで設計する必要があることです。次を参照してください。
-(id)objectForKey:(NSString *)key;
このクラスを呼び出す人々は、このように設計することに消極的ではありません。この分野の経験がある方は、共有して一緒に議論してください。