let
str =
"a"
func
operation(a:
String
){
objc_sync_enter(a) // 没有objc_asyn_xxxx
print
(
"
做一些操作,在这个操作的过程中,
a
保持不被修改
"
)
objc_sync_exit
(a)
}
// 封装
Lock.swift
func
Lock(object:
AnyObject
, callBack:()->()){
print ( " 开始执行 , 加锁 !" )
objc_sync_enter (object)
print ( " 执行中 ..." )
callBack()
objc_sync_exit (object)
print ( " 执行完毕 , 解锁 " )
}
// 实例 :
// let object = "aaa"
// Lock(object) { () -> () in
// print(" 锁住 \(object)")
// }
// 编译会报错 :
// var object:String = "aaa"
// Lock(object) { () -> () in
// print(" 锁住 \(object.insert("A", atIndex: 0))")
print ( " 开始执行 , 加锁 !" )
objc_sync_enter (object)
print ( " 执行中 ..." )
callBack()
objc_sync_exit (object)
print ( " 执行完毕 , 解锁 " )
}
// 实例 :
// let object = "aaa"
// Lock(object) { () -> () in
// print(" 锁住 \(object)")
// }
// 编译会报错 :
// var object:String = "aaa"
// Lock(object) { () -> () in
// print(" 锁住 \(object.insert("A", atIndex: 0))")
// }