美文网首页
个人理解1

个人理解1

作者: YM_1 | 来源:发表于2016-07-21 16:50 被阅读23次

    1、 内存管理理解。

    引用计数 是针对创建对象的内存地址。任何赋值操作都是表明一个对象对这块内存地址的引用,只不过 strong 引用会引起 内存地址引用 计数的 +1操作,而 weak 同样会让一个对象指向一个地址,但地址的引用计数并不增加。

    runtime采用散列表来管理引用计数

    因为autorelease对象要加入pool中,每一个线程都会维护自己的 autoreleasepool 堆栈。换句话说 autoreleasepool 是与线程紧密相关的,每一个 autoreleasepool 只对应一个线程。autorelease对象也就加入到线程对应的 autoreleasepool 了。

    PS:lldb watchpoint set v string_weak_ 设置观察点,观察

    NSObject ** obj;

    NSObject * __autoreleasing * obj;

    访问附有 __weak 修饰符的变量时,实际上必须访问注册到 autoreleasepool 的对象,

    ```

    id __weak obj1 = obj0;

    NSLog("class=%@", [obj1 class]);

    //等价于以下代码

    id __weak obj1 = obj0;

    id __autoreleasing tmp = obj1;

    NSLog("class=%@", [tmp class]);

    ```

    参考地址 http://blog.csdn.net/wzzvictory/article/details/17694129

    相关文章

      网友评论

          本文标题:个人理解1

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