在Swift3.0中使用Runtime中的objc_setAssociatedObject绑定Block闭包,编译时会出现报错。出错代码如下:
let key: UnsafeRawPointer! = UnsafeRawPointer.init(bitPattern: "key".hashValue)
objc_setAssociatedObject(self, key, myBlock, .OBJC_ASSOCIATION_COPY_NONATOMIC)
报错Showing Recent Issues Command failed due to signal: Segmentation fault: 11
后来尝试绑定字符串,可以运行,那就可能是类型不对,于是将Block转成AnyObject类型,完美解决。
解决方案:
objc_setAssociatedObject(self, key, myBlock as AnyObject, .OBJC_ASSOCIATION_COPY_NONATOMIC)