Swift で Objective-C の @synchronized
環境: Swift version 1.1 (swift-600.0.56.1)
クリティカルセクションを作りたいとき、Objective-C の場合は
@synchronized(obj) { ... }
となるところを Swift の場合は
objc_sync_enter(obj)
...
objc_sync_exit(obj)
とする。
exit 漏れが怖いのでラップする。
func sync(lock: AnyObject, proc: () -> ()) { objc_sync_enter(lock) proc() objc_sync_exit(lock) }
sync(obj) { ... }