首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
iOS开发runtime
订阅
元意什
更多收藏集
微信扫码分享
微信
新浪微博
QQ
11篇文章 · 0订阅
为什么要设计metaclass
今早起床打开微信,发现知识小集推送了一篇文章《阿里、字节:一套高效的iOS面试题》,打开瞅了眼,看到第二题就给我看懵圈了,为什么要设计metaclass?在我的知识体系中关于元类的认知是类对象的isa指向元类对象,元类对象存储着类方法列表,然后就没有然后了。 带着这个疑问我边开…
iOS开发·KVO用法,原理与底层实现: runtime模拟实现KVO监听机制(Blcok及Delgate方式)
1. KVO理论基础 KVO 是 Objective-C 对 观察者模式(Observer Pattern)的实现。当被观察对象的某个属性发生更改时,观察者对象会获得通知。有意思的是,你不需要给被观察的对象添加任何额外代码,就能使用 KVO 。这是怎么做到的? KVO 的实现也…
iOS 开发:『Runtime』详解(三)Category 底层原理
1. Category (分类)简介 Category(分类) 是 Objective-C 2.0 添加的语言特性,主要作用是为已经存在的类添加方法。Category 可以做到在既不子类化,也不侵入一个类的源码的情况下,为原有的类添加新的方法,从而实现扩展一个类或者分离一个类的…
iOS开发·runtime原理与实践: 基本知识篇(类,超类,元类,super_class,isa,对象,方法,SEL,IMP)
1. 运行时 Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 OC 代码,底层都是基于它来实现的。比如: 以上你可能看不出它的价值,但是我们需要了解的是 Objective-C 是一门动态语言,它会将一些工作放在代码运行…
Objective-C Runtime 从应用到原理
1. 应用 一个实例对象对应一个 ObjectAssociationMap,Map 中存储着多个此实例对象的关联对象的 key 以及 ObjcAssociation,ObjcAssociation 中存储着关联对象的 value 和 policy 策略。 关联对象并不是放在了原…
理解 ARC 实现原理
ARC 是 iOS 中管理引用计数的技术,帮助 iOS 实现垃圾自动回收,具体实现的原理是由编译器进行管理的,同时运行时库协助编译器辅助完成。主要涉及到 Clang (LLVM 编译器) 和 objc4 运行时库。 本文主要内容由修饰符 __strong 、 __weak 、 …
Clang Rewrite视角OC类结构分析与部分常见考点
0. 简介 本文利用clang -rewrite-objc探索了类、元类中存储的信息;类、元类、根源类的关系。 在开发中,请使用运行时API,而不是指针偏移、mask等更底层的方式获取信息。 因为苹果可能对这底层逻辑进行优化,如果直接访问会有不稳定的问题,但对外提供的API是稳…
阿里、字节 一套高效的iOS面试题解答(持续更新,最后更新3.26)
1. 介绍下runtime的内存模型(isa、对象、类、metaclass、结构体的存储信息等) 2. 为什么要设计metaclass 3. class_copyIvarList & class_copyPropertyList区别 class_copyPropertyList…
iOS 开发:『Runtime』详解(二)Method Swizzling
本文用来介绍 iOS 开发中『Runtime』中的黑魔法 —— Method Swizzling。
图解isKindOfClass和isMemberOfClass方法
我们在开发中经常会用到 isKindOfClass: 来判断一个 obj 是不是某个类型。 查看objc4源码,我们会看到,无论是谁调用isKindOfClass: 都会进入objc_opt_isKindOfClass C函数。 当superclass为nil,意味着最后的根类…