首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
iOS底层剖析
订阅
习哈
更多收藏集
微信扫码分享
微信
新浪微博
QQ
4篇文章 · 0订阅
iOS 为何使用runtime方法交换多次后却能按照交换顺序依次执行代码逻辑?
记method_exchangeImplementations(Method _Nonnull m1, Method _Nonnull m2) 方法多次执行的代码执行逻辑. 那么接下来我们就详细来探究一下每次追加一个方法交换,会对原方法有什么改变。 1. IMP方法实现交换 我…
从源码理解Category、load和initialize
Objective-C中的Category就是对装饰模式的一种具体实现。它的主要作用是在不改变原有类的前提下,动态地给这个类添加一些方法。 从源码中可以知道,分类转化成了_category_t类型的结构体,并且有几个分类,就会对应生成几个这样的结构体。这里有一点要说明一下,在o…
iOS内存管理系列第一篇-初识id指针
iOS中任何变量都有明确定义属于哪种类型,对象指针也是如此,属于id类型。id其实是结构体struct objc_object类型的指针. 而结构体struct objc_object仅仅有一个Class类型的成员变量isa。Class又是struct objc_class结构…
Objective-C block 深入了解
以上是通过NSLog打印不同类型log的输出结果。从结果可以看出分别对应着全局block、栈block和堆block。 当block中没有使用block外部的任何局部变量时,即为全局block。全局block在内存的全局数据区 通常情况全局block使用的情况比较少。 栈和堆b…