首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
SwiftSIQI
掘友等级
iOS工程师
|
美团点评
Founder of SwiftGG.Team & XReality.Zone. Swift Fan, Focus on iOS/visionOS/macOS. Learning and Sharing at SwiftSIQI.COM. More About me at bento.me/swiftsiqi
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
0
文章 0
沸点 0
赞
0
返回
|
搜索文章
最新
热门
Swift Tips 031 - Recursively calling closures as inline functions
这段代码在 records 函数中内定义了一个名为 iterate 的嵌套函数,当 nextRecord 满足 matches 方法的条件时,它返回 nextRecord 并继续遍历 recordIterator 里的元素,当 nextRecord 不满足 matches 方法…
Swift Tips 030 - Passing self to required Objective-C dependencies
像 DataLoader 和 Renderer 这样的工具类,八成是要与 Cocoa 框架打交道,例如 URLSession 的 delegate 需要继承 NSObject,CADisplayLink 的 selector 方法需要声明 @objc 关键字,这很不 Swift…
Swift Tips 029 - Making weak or lazy properties readonly
今天的这段代码为 Node 类设置了两个 readonly 的属性:parent 和 children,与其他 read only 属性不太一样的地方是:它们并没有显式的声明 getter 方法,而且看起来也不怎么像一个计算属性(因为只有计算属性才能 read only)。 如…
Swift Tips 028 - Defining static URLs using string literals
图示里的代码让 URL 遵守了 ExpressibleByStringLiteral 协议,并重写了其对应的构造器,使我们能够通过字符串的字面量直接创建 URL 对象。 如果想在 Swift 3 之前实现同样的功能,我们需要实现 URL 的 init(extendedGraph…
Swift Tips 027 - Manipulating points, sizes and frames using math operators
这段代码在 CGSize 类型中重载了名为 * 的中缀运算符,新的定义使其能够按照右侧的值等倍扩大 CGSize 中的 width 和 height。 运算符在 Swift 中是一个函数,而函数在 Swift 中是一等公民,所以正是基于这两点,开发者可以在运算符这个点上做很多有…
Swift Tips 026 - Using closure types in generic constraints
这段代码利用扩展的方式为 Sequence 增加了 2 个 API,并通过 where 语句约束了元素的类型为 ()->Void 或者 ()->String 才可以使用其对应的 API。 当然创建一个类似 sum(_ numbers: [Int]) 的 top-level 级别…
Swift Tips 025 - Using associated enum values to avoid state-specific optionals
截图里的上半部分是 Player 类型的定义,在这个定义里面,我们看到它使用 5 个属性来表示游戏里的状态和相关数据。 而截图里的下半部分是对 Player 类型 的定义进行了重构,增加了一个嵌套的枚举类型 State ,它将原先的 5 个属性整合在 State 类型里,并使用…
Swift Tips 024 - Using enums for async result types
截图展示了在处理异步回调时,通过使用枚举类型作为回调函数的参数,可以让代码的自解释性和可读性变得更好。 相比于之前的代码,我们发现 x 的含义变得十分模糊。 作为调用者,我并不能确定 x 等于 true 的时候,代码到底代表着什么含义;如果 API 设计者的本意是将 true …
Swift 小贴士 023 - Working on async code in a playground
为了使 Playground 具有延时运行的本领,我们需要引入 Playground 的 “扩展包” PlaygroundSupport 框架。现在这个框架中包含了几个与 Playground 的行为交互以及控制 Playground 特性的 API,其中就包括使 Playgr…
Swift Tips 022 - Overriding self with a weak reference
在处理逃逸闭包内部的逻辑时,我们通常会使用 weak self 的方式来避免循环引用。为了在闭包里面正确的使用 self 变量,我们需要通过可选绑定的方式将原先的 self 重新命名并使用。 而在 Swift 4.2 之后,基于 Allow using optional bin…
下一页
个人成就
文章被点赞
87
文章被阅读
29,726
掘力值
646
关注了
6
关注者
29
收藏集
1
关注标签
14
加入于
2016-04-28