首页
学习
活动
专区
工具
TVP
发布

Swift-开源分析

阅读更多 Swift 开源代码
专栏成员
17
文章
25775
阅读量
13
订阅数
Swift5.7: 泛型类型支持带尖括号的扩展绑定
目前指定泛型的类型参数基本都是通过<>来表示,例如Array<String>。但是Extension是个例外,因为如果你想为了某个泛型添加Extension, 并且指定参数类型,使用<>指定泛型约束的类型如String,此时编译器会报错,例如:
DerekYuYi
2022-12-01
1.4K0
"if #available"与不透明结果类型
自 SE-0244 引入以来,不透明的结果类型已成为类型级抽象的强大工具,允许库作者隐藏其API的实现细节。
DerekYuYi
2022-11-30
4940
标准库中的主要关联类型
SE-0346 已经引入了主要关联类型特性。本篇提议目的是为了在 Swift 标准库中使用此特性,为现有协议支持主要关联类型。此外,这篇提议还提供了一些通用的API设计建议,会对协议作者在添加对该特性的支持时提供便利。
DerekYuYi
2022-11-29
4840
Swift5.8 中 AnyKeyPath 支持 CustomDebugStringConvertible 协议
本篇提议目的是为了让AnyKeyPath支持实现CustomDebugStringConvertible协议。
DerekYuYi
2022-11-10
6220
Swift 闭包支持隐式 self
在 closure 捕获列表中,如果显式捕获self,则在 closure 使用时,则允许隐式使用self。即在 closure 捕获列表中声明[self], 则 closure 内调用self.的地方都可以不用书写该self.。这个特性在SE-0269中提议。现在本篇提议想把这个特性支持扩展到weak self的捕获上,并允许隐式self和已解包的self一样使用。效果就是如果在 closure 内 self 已经解包,则 closure 内调用 self 的地方可以不用写 self。如下例的dismiss方法调用:
DerekYuYi
2022-11-09
1.3K0
针对属性的条件编译优化
随着时间的推移,Swift 引入了许多新的属性,用来在源代码中传递额外信息。现有代码可以利用新的构造来改进,引入新功能,提供新的编译检查,更好的性能等等。但是,现有代码引入新属性意味着不能在旧的编译器上使用。自然而然你会想到用条件编译来解决该问题。例如可以使用#if 检查编译器版本,查看是否可以使用@preconcurrency属性:
DerekYuYi
2022-11-09
8660
未对齐原始内存的加载和存储操作
swift 目前没有提供从任意字节源(如二进制文件)加载数据的明确方法,这些文件中可以存储数据而不考虑内存中的对齐。当前提议旨在纠正这种情况。
DerekYuYi
2022-11-08
1.6K0
Swift 5.7 针对主要关联类型的轻量级同类型优化
如果你正在实现开发一个语法高亮库,并且定义一个函数readSyntaxHighlightedLines读取高亮语法的行数, 这个函数使用SyntaxTokenSequence来包装返回结果,结果中的元素类型是[Token], 代表每一行中语法高亮的 token 数组。例如:
DerekYuYi
2022-10-08
5470
Swift5.7 支持结构化不透明结果类型
当前提议主要是讲苹果在 Swift5.7 支持不透明结果类型的结构化表达,目前在 Swift5.7 已经实现。
DerekYuYi
2022-07-04
6290
Swift5.7 扩展不透明类型(some)到泛型参数
Swift 中的泛型语法是为了类型通用性设计,这种通用性允许在函数输入和输出时,使用复杂的类型集合来表达,前提是类型必须前后一致。例如下面这个例子是从两个序列构建一个数组:
DerekYuYi
2022-07-03
2.9K2
Swift 5.7 使用 'if let a' 替换 'if let a = a'
Swift 5.6 中比较常见的可选值解包绑定是使用 if let foo = foo { ... } 来对可选值解包,从而隐藏真正的可选值。这种模式要求开发者重复引用变量标识符 2 次,这样写的缺点在于解包时表达时会显得冗余,尤其是当变量名很长时。所以我们希望为可选值解包引入一种更简短的语法,类似以下语法:
DerekYuYi
2022-06-27
1.3K0
iOS16 和 Xcode14 如何改进 App 大小和运行时性能
本文主要介绍苹果在 Xcode14 和 iOS 16 上,如何从编译层面和运行时层面,优化 Swift 和 Objective-C runtime, 来让 app 二进制体积更小,运行更快,启动更快。当你使用 Xcode 14 构建应用程序时,你将会了解到如何访问高效的协议检查,更小消耗的消息发送调用,以及优化后的 ARC。下面我们深入探讨这几个方面的优化。
DerekYuYi
2022-06-26
3.8K1
Continuation - 连接异步任务和同步代码
异步 Swift 代码需要能够和现有同步代码一起使用,这些同步代码使用 completion 回调或者 delegate 方法等技术来响应事件。在 continuations 上,异步任务可以挂起自身,同步代码能够捕获并调用 continuations 来恢复任务,响应事件。
DerekYuYi
2022-01-23
2.1K0
Actors
Swift 并发模型旨在提供一种安全编程模型,可以静态检测数据竞争和其他常见的并发错误。结构化并发 提议引入了一种定义并发任务的方法,并为函数和闭包提供数据竞争(data-race)安全性。此模型适用于许多常见的设计模式,包括并行映射和并发回调模式,但仅限于处理闭包里捕获的状态。
DerekYuYi
2022-01-19
1.2K6
结构化并发
async/await是一种编写自然且高效异步代码的语言机制。异步函数(使用async声明)在执行任何挂起点的地方(使用await标记)都可以放弃它所在的线程,这对构建高并发系统非常有必要。
DerekYuYi
2022-01-12
2.9K0
Async/await
当前 Swift 开发中使用 closures 和 completion handlers 处理大量异步编程,但是这些 API 很难用。特别是当我们需要调用多个异步操作,进行多个错误处理(error handling), 或者需要在异步回调完成时处理控制流,这些情况下代码会变得很难阅读。本篇提案描述了一种语言扩展,使上述问题处理更自然,更不容易出错。
DerekYuYi
2022-01-05
1.9K0
有效的只读属性
Swift 中类,结构体和枚举等类型支持计算属性和下标,这些计算属性和下标作为类型的成员,当获取或者设置这些成员时,他们触发程序员指定的计算。最近被接受的提案 SE-0296 介绍了通过和async和await来实现异步函数,但是没有指明计算属性和下标可以支持类似async这种异步效果。此外,为了充分利用async属性,用来指定一个属性throw同样重要。本文旨在通过为有效的只读属性和下标提供语法和语义来填补这部分空白。
DerekYuYi
2021-12-17
1.8K0
没有更多了
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档