objective-c non-fragile ivars 学习笔记

本文探讨了Objective-C中的non-fragile ivars特性,旨在解决二进制兼容性问题。文章阐述了该特性如何通过改变成员变量的偏移量处理SuperClass增删成员变量对SubClass的影响,以及Category无法增加成员变量的原因。内容包括non-fragile ivars的原理、应用场景及为何Category不支持增加成员变量的分析。
摘要由CSDN通过智能技术生成

    最近想要对我维护的 App 做启动优化,找到了这两个视频资料,Optimizing App Startup TimeiOS App Performance: Responsiveness。视频干货很多,涉及到了 iOS 可执行文件的结构、系统是如何启动 App 的等等底层知识,需要慢慢消化。针对其中的一个点,non-fragile ivars offset update ,这个启动流程中的一环,我继续搜索了一些资料,希望可以真的理解这个事情。我将从这个特性是为了解决什么问题、这个特性是如何解决问题的,原理是什么、这个特性有哪些应用等方面做一下总结。还参考了:http://quotation.github.io/objc/2015/05/21/objc-runtime-ivar-access.html

一、non-fragile ivars 解决了什么问题

    解决了二进制的兼容性问题。没有 non-fragile ivars 特性,SuperClass 增删了成员变量,SubClass 必须重新编译才能正常运行。原因是 fragile ivars 环境下,成员变量在对象内存中的偏移量是编译阶段确定的,作为常量 hardcode 到指令中(这一点不确定,求证之后回来 u

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值