Objective-C には @synchronized という、複数スレッドからの同時アクセスをブロックする排他制御を行う仕組みが用意されています。 この @synchronized ディレクティブでは、引数に指定した Objective-C インスタンスをキーにして、他からの同時アクセスをブロックしたり、他がブロックを解除されるのを待ったりできます。 これと同等の排他制御として ミューテックス があります。 他にも セマフォ、@property の atomic キーワード、NSLock、NSRecursiveLock などが利用できます。 クリティカルセクションを保護する 同時アクセスされたくない個所を、キーとして使う Objective-C インスタンスを引数にして @synchronized で括ります。 引数に渡すキーには self も使えるので、クラスインスタンス全体で 1