首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
师大小海腾
掘友等级
iOS 开发者
|
BabyBus
iOS 摸鱼周报编辑
获得徽章 7
动态
文章
专栏
沸点
收藏集
关注
作品
赞
200
文章 195
沸点 5
赞
200
返回
|
搜索文章
最新
热门
深入浅出 RunLoop(四):RunLoop 与线程
苹果官方文档中,RunLoop的相关介绍写在线程编程指南中,可见RunLoop和线程的关系不一般。Threading Programming Guide(苹果官方文档) 主线程的RunLoop对象是在UIApplicationMain中通过[NSRunLoop currentR…
深入浅出 RunLoop(三):事件循环机制
前面我们介绍了RunLoop的基本概念以及相关数据结构,这篇我们来讲解一下RunLoop到底是怎么工作的。 首先我们来看一下主线程的RunLoop的启动过程。 前面我们说过,我们的 iOS 程序能保持持续运行的原因就是在main()函数中调用了UIApplicationMain…
深入浅出 RunLoop(二):数据结构
如果 Mode 里没有任何Source0/Source1/Timer/Observer,RunLoop会立马退出。 比如NSDefaultRunLoopMode默认模式和UITrackingRunLoopMode滚动模式,滚动屏幕的时候就会切换到滚动模式,就不用去处理默认模式下…
深入浅出 RunLoop(一):初识
RunLoop不是一个简单的do...while循环,它涉及到用户态和内核态之间的切换。 没有消息需要处理时,休眠线程以避免资源占用。从用户态切换到内核态,等待消息; 通过调用mach_msg()函数来转移当前线程的控制权给内核态/用户态。 如果没有RunLoop,main()…
深入浅出 Runtime(五):相关面试题
在 arm64 架构之前,isa就是一个普通的指针,直接指向objc_class,存储着Class、Meta-Class对象的内存地址。instance对象的isa指向class对象,class对象的isa指向meta-class对象; 从 arm64 架构开始,对isa进行了…
深入浅出 Runtime(四):super 的本质
1. objc_super 与 objc_msgSendSuper 我们先来看两个数据结构objc_super和objc_super2。 再来看两个函数objc_msgSendSuper()和objc_msgSendSuper2()。 但是从官方注释我们可以推测,objc_ms…
深入浅出 Runtime(三):消息机制
1. objc_msgSend 方法调用流程 在OC中调用一个方法时,编译器会根据情况调用以下函数中的一个进行消息传递:objc_msgSend、objc_msgSend_stret、objc_msgSendSuper、objc_msgSendSuper_stret。当方法调用…
深入浅出 Runtime(二):数据结构
1. objc_object Objective-C的面向对象都是基于C/C++的数据结构——结构体实现的。 我们平时使用的所有对象都是id类型,id类型对象对应到runtime中,就是objc_object结构体。 2. objc_class Class指针用来指向一个 Ob…
深入浅出 Runtime(一):初识
Objective-C 是一门动态运行时语言,允许很多操作推迟到程序运行时再进行。OC的动态性就是由 Runtime 来支撑和实现的,Rumtime 就是它的核心; 我们平时编写的OC代码,底层都是转换成了 Runtime API 进行调用。 运行时:代码跑起来,被装载到内存中…
OC 底层探索 - Block 详解
通过 Clang 将以下 Block 代码转换为 C++ 代码,来分析 Block 的底层实现。 Block 底层数据结构就是一个__main_block_impl_0结构体对象,其中有__block_impl和__main_block_desc_0两个结构体对象成员。 调用_…
下一页
个人成就
文章被点赞
942
文章被阅读
196,789
掘力值
4,769
关注了
52
关注者
898
收藏集
5
关注标签
12
加入于
2019-12-30