首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
IOS底层
订阅
洋之
更多收藏集
微信扫码分享
微信
新浪微博
QQ
12篇文章 · 0订阅
iOS底层原理总结 - Runtime(3)方法调用的本质
通过上述源码可以看出c++底层代码中方法调用其实都是转化为 objc_msgSend函数,OC的方法调用也叫消息机制,表示给方法调用者发送消息。 消息发送阶段:负责从类及父类的缓存列表及方法列表查找方法。 动态解析阶段:如果消息发送阶段没有找到方法,则会进入动态解析阶段,负责动…
iOS底层原理总结 - Runtime(1)isa指针
每个OC对象都含有一个isa指针,__arm64__之前,isa仅仅是一个指针,保存着对象或类对象内存地址,在__arm64__架构之后,apple对isa进行了优化,变成了一个共用体(union)结构,同时使用位域来存储更多的信息。 OC对象的isa指针并不是直接指向类对象或…
iOS 底层OC语法2(探寻Class的本质)
Class对象其实是一个指向objc_class结构体的指针。因此我们可以说类对象或元类对象在内存中其实就是objc_class结构体。 我们来到objc_class内部,可以看到这段在底层原理中经常出现的代码。 这部分代码相信在文章中很常见,但是OBJC2_UNAVAILAB…
iOS 底层OC语法1(探索OC对象的本质)
OC的对象结构都是通过基础的C\C++的结构体实现的。 我们通过创建OC文件及对象,并将OC文件转化为C++文件来探寻OC对象的本质。 我们通过命令行将OC的mian.m文件转化为c++文件。 思考: 一个OC对象在内存中是如何布局的。 NSObjcet的底层实现,点击NSOb…
iOS底层原理总结 - Runtime(4)本质super 与class
首先来看一道面试题。 下列代码中Person继承自NSObject,Student继承自Person,写出下列代码输出内容。 上述代码中可以发现无论是self还是super调用class或superclass的结果都是相同的。 我们通过一段代码来看一下super底层实现,为Pe…
iOS 底层OC语法3(探索KVO的本质)
首先需要了解KVO基本使用,KVO的全称 Key-Value Observing,俗称“键值监听”,可以用于监听某个对象属性值的改变。 通过上述代码我们发现,一旦age属性的值发生改变时,就会通知到监听者,并且我们知道赋值操作都是调用 set方法,我们可以来到Person类中重…
iOS 底层OC语法4(探索Category的本质,load和initialize,关联对象)
分类提出问题 (Category为什么只能加方法不能加属性。) 分类中的对象方法依然是存储在类对象中的,同对象方法在同一个地方,那么调用步骤也同调用对象方法一样。如果是类方法的话,也同样是存储在元类对象中。 那么分类方法是如何存储在类对象中的,我们来通过源码看一下分类的底层结构…
iOS内存管理
2,监控屏幕是否掉帧。(cpu计算,gpu绘制,如果处理不了就会掉帧) 原因1 __weak 修饰block 内的self 时,block对内部的self弱引用,打破了循环,但是这个不是block. 原因2 用__weak 修饰self,timer内部可能是用强引用持有的sel…
iOS底层之RunLoop
运行循环,让程序一直存活,在程序运行过程中循环做一些事情。 RunLoop 实际上就是一个对象,这个对象管理了其需要处理的事件和消息,并提供了一个入口函数来执行上面 Event Loop 的逻辑。线程执行了这个函数后,就会一直处于这个函数内部 “接受消息->等待->处理” 的循…
iOS 底层(深入理解blcok)
带有自动变量(局部变量)的匿名函数。 我们在使用Block的过程中,可以在Block内部访问外部的变量,包含局部变量、静态变量(相当于私有的全局变量)、全局变量等等。现在就通过一个Demo来看一下block底层是如何访问外部变量的。 可以看出,此时__main_block_im…