首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
Weak
订阅
不凡不繁
更多收藏集
微信扫码分享
微信
新浪微博
QQ
17篇文章 · 0订阅
iOS weak实现原理
我们日常开发中经常是使用weak关键字来解决循环引用的问题,原因是被weak引用的对象它的引用计数不会增加,而且在这个对象被释放的时候被weak修饰的变量会自动置空,不会造成野指针的问题,相对来说比较安全。那么weak底层究竟是如何实现的呢?接下来我们一起来探究weak的实现原…
Swift高阶 - 内存管理:ARC, Strong, Weak and Unowned详解
内存管理是任何编程语言中的核心概念。 尽管有很多教程解释了Swift自动引用计数的基本原理,但我发现没有一个可以从编译器的角度对其进行解释。 在本文中,我们将学习iOS内存管理,引用计数和对象生命周期等基础知识之外的内容。 从硬件层面,内存只是一长串字节。 在虚拟内存中它被分成…
Swift之你真的知道为什么使用weak吗?
在Swift中:变量分为值类型和引用类型。如果是引用类型,则是捕获了对象的引用,即在闭包中复制了一份对象的引用,对象的引用计数加1;如果是值类型呢,捕获的是值类型的指针,如果在闭包中修改值类型的话,同样会改变外界变量的值。 在外面改变变量的值之后,闭包执行是捕获到的变量的值会随…
深入研究Block用weakSelf、strongSelf、@weakify、@strongify解决循环引用
前言 在上篇中,仔细分析了一下Block的实现原理以及__block捕获外部变量的原理。然而实际使用Block过程中,还是会遇到一些问题,比如Retain Circle的问题。 目录 1.Retain Circle的由来 2.__weak、__strong的实现原理 3.wea…
iOS管理对象内存的数据结构以及操作算法--SideTables、RefcountMap、weak_table_t-二
这篇文章是之前那篇文章iOS管理对象内存的数据结构以及操作算法--SideTables、RefcountMap、weak_table_t的补充和延伸。如果没有阅读过前一篇文章请先看那一篇。 上一篇文章中关于SideTables、SideTable和RefcountMap三者关系…
iOS底层原理:weak的实现原理
该方法的两个参数location和newObj。 从上面的代码可以看出objc_initWeak方法只是一个深层次函数调用的入口,在该方法内部调用了storeWeak 方法。下面我们来看下storeWeak 方法的实现代码。 如下是storeWeak方法的实现代码。 store…
iOS-weak原理
weak是iOS开发中很常见的知识点,大家都知道weak是一个修饰词,作用是对修饰的对象弱引用,在对象被释放的时候引用计数会置空。 location:指__weak指针的地址,它是一个指针的地址。之所以要存储指针的地址,是因为当我们释放对象的时候需要将__weak指针指向的内容…
逐步探究ObjC的Weak技术底层
之前的文章有说过 Atomic 原子操作的原理,其作为一个特殊的修饰前缀,影响了存取操作。 让我们从属性修饰入手,逐步揭开弱引用的面纱。 首先我们先创建一个示例代码文件作为样本。 然后通过 clang -rewrite-objc -fobjc-arc -stdlib=libc+…
Weak-Strong-Dance 真的安全吗?
绝大多数 iOS 开发者用过 block,并且知道用 __weak 的方式去解决循环引用的问题。而进阶一些的开发者则了解 Weak-Strong-Dance,那么什么是 Weak-Strong-Dance?它能保证 block 执行是的 “安全” 吗? Weak-Strong-Dance 看看下…
iOS 从源码深入探究weak的实现 | 掘金技术征文
关于weak的知识我就不再多说,直接开始我们的源码分析之旅 __weak id __week obj1 = obj;编译器的模拟代码 id obj1; obj1 = 0; objc_storeWeak(&obj1, obj); objc_storeWeak(&obj1, 0);…