首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
沉默Coder
掘友等级
iOS
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
25
文章 25
沸点 0
赞
25
返回
|
搜索文章
赞
文章( 25 )
沸点( 0 )
从SIL看Swift函数派发机制
0. 引言 答案是: protocol 。 原因是 extension中声明的函数是静态派发,编译的时候就已经确定了调用地址,类无法重写实现。 我们可以看到SVG初始化后,是直接调用 Drawing.render() 协议的静态函数的。 而对于 Drawing.render()…
Runtime面试题与栈区参数
1. 面试题 当然,本着 反正不是真面试 的态度,直接跑一下不就行了,嘿嘿。 下面我们仔细分析一下。 2. 分析 这一步获取到了Speaker的类对象,id表示将其转换为一个对象指针,实际类型为struct objc_object *。 而 [Speaker class] 的返…
oc-底层原理之objc_msgSend慢速查找
在上一篇文章中(oc-底层原理之objc_msgSend方法快速查找)我们知道objc_msgSend在发送消息时首先会从缓存中去查找方法的IMP,但是如果缓存没有命中时会怎么处理呢?这一篇文章我们将
oc-底层原理之objc_msgSend方法快速查找
你也可以自己尝试一下。我们可以得出一个结论, and p10, p11, #0x0000ffffffffffff:在cache_t中,低48位存储的是buckets,高16位存储的是mask,用cache指针和0x0000ffffffffffff进行与运算以后,就得到低48位。…
iOS-底层分析之alloc
作为一个iOS开发者,当我们创建对象的时候我们都会使用alloc或者new来创建,但是我们调用类的alloc或者new方法的时候具体流程是怎样的呢?如何调试objc源码在开发中我们经常遇到系统库的相关
iOS开发请您面向未来学习
有一个小伙伴跟我微信电话。接通,那边传来非常有礼貌的:大神好!紧接着就开始一连串的"轰炸": 现在要不要转行,感觉现在是大前端时代. 可能很多小伙伴,会猜测我第一步是安慰他的情绪。但是我没有,因为这是一个成熟的IT开发人员必须经历的东西,这样的失落焦虑对他会有另一重帮助:迎接焦…
iOS Crash防护
“信号”是操作系统模拟软硬中断的工作过程的一种处理异步事件的机制,例如:终端用户键入ctrl+c会产生SIGINT信号默认会终止终端进程。 终端连接断开,则将此信号送给与该终端相关的控制进程(会话首进程)。 若父进程退出导致进程组成为孤儿进程组,且该进程组中有进程处于停止状态(…
oc-底层原理分析之Cache_t
mask传入的是mask_t m = capacity - 1;也就是当前的容量 - 1。通过和mask相与,我们得到的数字肯定是小于等于mask的,通过这种方式就可以得到sel和数组index的对应关系,在查找的时候就可以直接通过sel得到数组对应的index,不再需要遍历整…
Clang Rewrite视角OC类结构分析与部分常见考点
0. 简介 本文利用clang -rewrite-objc探索了类、元类中存储的信息;类、元类、根源类的关系。 在开发中,请使用运行时API,而不是指针偏移、mask等更底层的方式获取信息。 因为苹果可能对这底层逻辑进行优化,如果直接访问会有不稳定的问题,但对外提供的API是稳…
iOS-底层分析之类的结构分析
类的结构分析本文主要分析iOS中的类以及类的结构,下面我们通过一个例子来探索类的结构我们定义一个WPerson类我们通过Clang命令将这个类编译成.cpp文件我们在编译结果的文件中找到WPerson
下一页
个人成就
文章被点赞
24
文章被阅读
7,346
掘力值
291
关注了
6
关注者
6
收藏集
1
关注标签
5
加入于
2020-09-04