
Swift
文章平均质量分 69
Swift
竹子与牛
iOS开发
展开
-
RxSwift第一篇:核心逻辑分析
文章目录创建序列订阅序列发送事件总结//序列创建let ob = Observable<Any>.create { (observer) -> Disposable in //要观察的事件 observer.onNext("abc") return Disposables.create()}//订阅序列_ = ob.subscribe(onNext: { (text) in print("订阅到了\(text)")}, onError: { (原创 2021-02-11 00:45:15 · 212 阅读 · 0 评论 -
重学Swift第十篇:Codable
文章目录解码JSONDecoder源码解析_JSONDecoder编码Codable可以将自身与外部表示形式(例如JSON)进行互相转换的类型。public protocol Encodable { func encode(to encoder: Encoder) throws}public protocol Decodable { init(from decoder: Decoder) throws}public typealias Codable = Decodable & En原创 2020-12-30 23:53:54 · 583 阅读 · 1 评论 -
重学Swift第八篇:协议类型
文章目录协议原创 2020-12-26 22:12:03 · 246 阅读 · 0 评论 -
重学Swift第七篇:闭包
文章目录前言一、二、总结前言本节内容需要分析IR代码,语法可参考LLVM语言参考手册。一、二、总结原创 2020-12-25 19:46:13 · 571 阅读 · 1 评论 -
重学Swift第六篇:枚举、错误处理
文章目录一、一、原创 2020-12-22 22:27:02 · 579 阅读 · 0 评论 -
重学Swift第五篇:Mirror源码初探
文章目录一、Swift Runtime探索二、反射三、元类型、AnyClass、Self四、错误处理一、Swift Runtime探索二、反射三、元类型、AnyClass、Self四、错误处理原创 2020-12-20 00:21:47 · 723 阅读 · 0 评论 -
重学Swift第四篇:指针 & 内存管理
文章目录一、RawPointer二、TypedPointer一、RawPointer二、TypedPointer原创 2020-12-16 19:48:44 · 883 阅读 · 0 评论 -
重学Swift第三篇:方法调度
文章目录一、值类型与引用类型二、方法静态调度与动态调度一、值类型与引用类型二、方法静态调度与动态调度原创 2020-12-13 20:03:06 · 515 阅读 · 0 评论 -
重学Swift第二篇:属性
文章目录前言一、存储属性1.1 延时加载存储属性二、计算属性三、类型属性四、属性观察器五、属性包装器前言属性将值与特定的类、结构体或枚举关联。存储属性会将常量和变量存储为实例的一部分,而计算属性则是直接计算(而不是存储)值。计算属性可以用于类、结构体和枚举,而存储属性只能用于类和结构体。存储属性和计算属性通常与特定类型的实例关联。但是,属性也可以直接与类型本身关联,这种属性称为类型属性。另外,还可以定义属性观察器来监控属性值的变化,以此来触发自定义的操作。属性观察器可以添加到类本身定义的存储属性上,也可原创 2020-12-11 23:30:42 · 232 阅读 · 0 评论 -
重学Swift第一篇:类结构探索
文章目录前言一、Swift编译过程二、SIL分析三、类结构探索总结前言内容主要是通过对Swift源码和SIL代码来学习Swift中底层的实现。一、Swift编译过程一个swift文件的编译过程如下:Swift在编译过程中使用的LLVM前端编译器是swiftc,可通过swiftc -h查看了解各命令的作用。二、SIL分析在main.swift中定义Test类class Test {}var test = Test()通过swiftc -emit-sil main.swift >&原创 2020-12-09 23:49:11 · 360 阅读 · 0 评论 -
Swift源码项目编译
文章目录前言一、编译环境二、编译步骤三、Ninja增量编译前言本文记录了Swift源码项目在macOS系统下的编译过程,电脑配置低,4G内存 + 128G硬盘,最后编译下来大约使用了50多G硬盘空间,耗时大概7个小时。编译过程建议学习ninja和build-script相关参数按自己所需进行配置。一、编译环境Python3:一些脚本python写的Xcode硬盘空间:源代码大约3.5G,根据构建设置不同,构建完成在5G~70G之间。CMake:CMake是用于C和C ++的跨平台构建系统N原创 2020-12-07 01:46:10 · 1020 阅读 · 0 评论 -
SwiftPM简介与使用
SPM一、什么是SPM?二、概览1. Packages(包)2. Modules(模块)3. Products(产物)4. Dependencies(依赖)使用1. 创建包1.1 创建库包1.2 创建可执行程序包总结一、什么是SPM?Swift Package Manager是用于管理源代码分发的工具,旨在简化共享代码和重用他人代码的过程。该工具直接解决了编译和链接Swift软件包,管理依赖关系,版本控制以及支持灵活的分发和协作模型的挑战。我们设计该系统的目的是使在GitHub之类的服务上共享软件包变原创 2020-10-11 00:15:17 · 1976 阅读 · 0 评论