IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> iOS-底层原理 09:关键字strong&copy&weak底层分析 -> 正文阅读

[C++知识库]iOS-底层原理 09:关键字strong&copy&weak底层分析

在clang编译的cpp文件中可以发现 strong & copy & weak 修饰的属性在编译的底层代码中是有区别的

?用clangmain.m文件编译成main.cpp,然后发现copy 和strong修饰的属性的set方法是有区别的

copy的赋值是通过objc_setProperty,而strong的赋值时通过self + 内存平移

在LLVM中搜索”objc_setProperty,找到如下所示的getOptimizedSetPropertyFn方法中

从这里即可看出,针对不同的修饰符,返回的那么是不同的

  • 如果是atomic & copy修饰,name为objc_setProperty_atomic_copy

  • 如果是atomic 且没有copy修饰,name为 objc_setProperty_atomic

  • 如果是nonatomic & copy 修饰,name为 objc_setProperty_nonatomic_copy

  • 其他剩余的组合,即nonatomic、nonatomic & strong、nonatomic & weak等,name为objc_setProperty_nonatomic

?然后通过汇编调试发现,最终都会走到objc_storeStrong

源码中搜索objc_storeStrong,有如下源码,主要也是retain新值,release旧值

llvm编译源码中搜索objc_storeStrong,找到EmitARCStoreStrongCall方法,如下图所示,发现copy 和 strong修饰的属性执行的策略是不一致的

llvm中搜索EmitARCStoreStrongCall方法,在GenerateCopyHelperFunction方法有调用,然后在这里发现了strong 和 weak的不同处理?如果是weak修饰,执行EmitARCCopyWeak方法,如下所示,weak在底层的调用是?objc_initWeak

?

  • 如果是strong修饰,执行EmitARCStoreStrongCall方法

?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-27 16:01:53  更:2021-07-27 16:02:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/1 21:19:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码