swift objc_setAssociatedObject block(version1.2 xcode6.4)

来源:互联网 发布:北京警察网络联系 编辑:程序博客网 时间:2024/06/06 19:01

 

import UIKitclass LSObjectWrapper: NSObject {    let value: ((barButton: UIButton?) -> Void)?        init(value: (barButton: UIButton?) -> Void) {        self.value = value    }}

 

    private var LSActionBlockKey = 0    var actionBlock:((barButton: UIButton?) -> Void)?{        get{            let wrapper:LSObjectWrapper? = objc_getAssociatedObject(self, &LSActionBlockKey) as? LSObjectWrapper            let block = wrapper?.value            return block;        }        set{            let wrapper = LSObjectWrapper(value: newValue!)                objc_setAssociatedObject(self, &LSActionBlockKey, wrapper, objc_AssociationPolicy(OBJC_ASSOCIATION_RETAIN_NONATOMIC))        }    }

 

weak等类型类似