美文网首页面试iOS
Block底层实现分析03-循环引用

Block底层实现分析03-循环引用

作者: Jacob_LJ | 来源:发表于2018-09-08 22:41 被阅读12次

注:分析参考 MJ底层原理班 内容,本着自己学习原则记录

本文使用的源码为objc4-723

转 C++ 使用的命令 :
xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc -fobjc-arc -fobjc-runtime=ios-8.0.0 main.m

1 ARC 下,循环引用现象

2 ARC 下,解决循环引用

2.1 __weak修饰对象

缺点:

  • 推荐使用这种方式

2.2 __unsafe_unretain修饰对象

缺点:

  • 不安全
  • __weak__unsafe_unretain区别
    __weak:不会产生强引用,指向的对象销毁时,会自动将指针置nil,防止野指针错误
    __unsafe_unretain:不会产生强引用,不安全,指向的对象销毁时,指针置存储的地址值不变

2.3 __block修饰对象

缺点:

  • block 必须要执行
  • 必须在 block 执行完任务后手动将指针置 nil

3 MRC 下,循环引用现象

使用指令:
xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc -fobjc-runtime=ios-8.0.0 main.m

4 MRC 下,解决循环引用

MRC 下不支持__weak

4.1 __unsafe_unretain

4.2 __block


文/Jacob_LJ(简书作者)
PS:如非特别说明,所有文章均为原创作品,著作权归作者所有,转载需联系作者获得授权,并注明出处,所有打赏均归本人所有!

相关文章

  • Block经典问题循环引用&解决

    Block内存关系Block经典问题循环引用&解决Block底层分析Block底层HooK 1.循环引用怎么产生的...

  • Block底层实现分析03-循环引用

    注:分析参考 MJ底层原理班 内容,本着自己学习原则记录 本文使用的源码为objc4-723 转 C++ 使用的命...

  • Block探索

    Block内存关系Block经典问题循环引用&解决Block底层分析Block底层HooK 程序占用内存分类 栈区...

  • Block底层分析

    Block内存关系Block经典问题循环引用&解决Block底层分析Block底层HooK 1. 研究工具:cla...

  • Block底层hook

    Block内存关系Block经典问题循环引用&解决Block底层分析Block底层HooK 前言 如何反编译出微信...

  • OC底层面试知识点之 —— Block底层原理!

    本文将介绍block的类型,循环引用的解决方法以及block底层分析 Block简介 Block定义:带有自动变量...

  • Block 深入浅出

    标签:block block的类型 循环引用的解决方法 block底层的分析 本章节主要介绍 1.block的类型...

  • block分析

    本文主要介绍block的类型、循环引用的解决方法以及block底层的分析 block 类型 block主要有三种类...

  • iOS-底层原理:Block

    这里主要介绍block的类型、循环引用的解决方法以及block底层的分析 block 类型 block主要有三种类...

  • iOS Block底层原理

    本文主要介绍block的类型、循环引用的解决方法以及block底层的分析 block 类型 block主要有三种类...

网友评论

    本文标题:Block底层实现分析03-循环引用

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