美文网首页就你这辣鸡还来开发我的iOS
iOS 尽量减少使用weak修饰符

iOS 尽量减少使用weak修饰符

作者: 一本大书 | 来源:发表于2017-01-11 11:35 被阅读17次

    weak修饰符修饰的变量在被使用的时候会涉及到表查询,消耗cpu性能。

    id __weak obj1 = obj; // 变量obj由strong修饰
    
    /* 编译器模拟代码 */
    id obj1;
    objc_initWeak(&obj1, obj);
    objc_destoryWeak(&obj1);
    

    等同如下

    /* 编译器模拟代码 */
    id obj1;
    obj1 = 0;
    objc_storeWeak(&obj1, obj);
    objc_storeWeak(&obj1, 0);
    

    objc_storeWeak 函数把第二个参数的赋值对象的地址作为键值,将第一个参数的带有 __weak 修饰的变量的地址注册到 weak 表中。如果第二个参数为 0,把变量从weak表中删除。
    这里边涉及到了查表的操作,消耗cpu性能,所以最好只在避免循环引用的时候才去使用__weak修饰符。

    相关文章

      网友评论

        本文标题:iOS 尽量减少使用weak修饰符

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