美文网首页Swift3.0iOS-swiftiOS程序猿
Swift3.0朝圣之路-objc_setAssociatedO

Swift3.0朝圣之路-objc_setAssociatedO

作者: 溪枫狼 | 来源:发表于2016-10-09 15:01 被阅读242次

    在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

    QQ20161009-0@2x.png

    后来尝试绑定字符串,可以运行,那就可能是类型不对,于是将Block转成AnyObject类型,完美解决。
    解决方案:

    objc_setAssociatedObject(self, key, myBlock as AnyObject, .OBJC_ASSOCIATION_COPY_NONATOMIC)
    

    如果对创建UnsafeRawPointer类型Key的代码好奇,请看我另一篇文章:Swift3.0朝圣之路-使用Runtime在分类Extension中添加属性



    我所有Swift3.0练习Demo都放到了Github上,并且在不断更新。
    Swift3.0朝圣之路-全集地址

    1. Swift3.0闭包的使用详解,简单封装GET/POST网络请求
    2. WKWebView的使用详解,包括JS交互
    3. 原来MapKit的简单使用,包括定位+地图+地理编码
    4. OC+Swift混编,介绍高德地图SDK的简单使用,包括定位+地图+POI搜索+导航+UISearchController使用
    5. 协议代理的基础用法
    6. 分类/类别的使用和封装
    7. 【Then协议库】-眼前一亮的初始化方式
    8. 使用Runtime在分类Extension中添加属性
    9. 封装UIAlertController
    10. 自定义相册【尚未完成】
    11. 用原生框架扫描、识别二维码图片,生成黑白色、彩色二维码图片

    相关文章

      网友评论

        本文标题:Swift3.0朝圣之路-objc_setAssociatedO

        本文链接:https://www.haomeiwen.com/subject/ysnpyttx.html