首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
Swift
订阅
柴阿文
更多收藏集
42篇文章 · 0订阅
Swift - 实例对象调用协议方法优先级分析/ witness_methos witness_table分析
本文主要探究: 1. 当一个类遵循了协议,且协议和类都有方法实现时,实例对象调用方法的优先顺序 # 总结: 1. 当协议中有方法声明时(witness_table有声明), - 类中有
Swift 派发机制
前言 对于编译型语言来看,有主要三种类型的函数派发方式,分别为: Direct Dispatch: 直接派发 Table Dispatch: 函数表派发 Message Dispatch: 消息派发
从值类型复制引发的Swift内存的思考01
前不久看了一篇文章,喵神的值类型和引用类型,在阅读的时候有一个结论 值类型被复制的时机是值类型的内容发生改变时... 这个时候本来是想记下来的,后来转念一想,实践出真知,所以我就基于这个问题: 值类型到底是什么时候被赋值的? 做了一些调查和实践,从而有了这系列文章... 在这块…
原生 Markdown 渲染 - SwiftUI
Markdown 其实是服务于 HTML 的工具,简化 HTML 的编写。事实上 Markdown 的应用十分成功。但是在移动端上或者桌面端上,通常会使用 Web 框架支持来渲染 Markdown 。
Swift结构体底层StructMetadata
我们通过上一篇文章可以知道,Struct通过Mirror解析发现,Struct的type本质就是StructMetadata。 我们上来先嗨一下,提高点兴致,后面读源码有点枯燥。 里面的Teacher类可以替成换自己的类,也可以增加替换属性,里面的注释已经写的很详细了。 有关于…
Swift协议Codable底层探索及应用
Codable是Swift 4.0后引入的特性,目标是取代NSCoding协议。 相信很多小伙伴已经用上了吧,虽然Codable给我们JSON数据解析带来一种解决方案,但是在很多情况下又不是那么好用。所以我们一起探索下Codable的底层实现,以及如何改进使用方式。 我们看到,…
探索Swift中Dictionary的底层实现及原理
swift字典的设计思路和数组还是有点像的,可以参考我前面写的数组篇,因为这里会讲swift字典用到的hash原理,篇幅有限,将会弱化源码的阅读。 Dictionary存的貌似是个堆上的地址0x000000010053eb40,查看该地址后,发现果然和Array一样,是一个类结…
Swift原生类底层ClassMetadata
ClassMetadata在底层源码代码有点多,所以会挑一些注意点,或者理解起来难度的地方写。一些比较基础的就跳过了,因为全写有点多。我前面写过一篇StructMetadata,会简单点,还有些相同的内容。 同样,ClassMetadata我也翻译成Swift代码实现了一遍,附…
Swift的中间文件:Swift Intermediate Language(简称SIL)
这样生成的项目只有一个main.swift文件,不会含有其他的干扰项。 我们可以从SIL中看到一些奇怪无规律的名字,例如:s4main6personAA7TeacherCvp。这其实是swift采用了名字重整技术,swift中的类名、方法名等会被重整,这样可以实现方法的重载,更…
探索Swift中Array的底层实现
很显然,从定义上来看,Array是一个struct类型,那也就是值类型了。 在Array中真的只有一个属性_buffer,_buffer在_runtime(_ObjC)下是_ArrayBuffer,否则是_ContiguousArrayBuffer。在苹果的设备下应该都是兼容O…