[objective-c] How does @synchronized lock/unlock in Objective-C?