首页
首页
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 021 - Using DispatchWorkItem
代码截图里,首先使用 DispatchWorkItem 创建了一个待执行任务,然后我们将该任务放在主队列中,声明该任务会在 1 秒后执行。最后一句代码不是必要的,它表示立即取消执行中的任务。 如果之前的代码执行正常的话,任务在执行完毕后就不会占用任何系统资源,但在某些情况下,例…
Swift Tips 020 - Combining a sequence of functions
代码截图里声明了一个 + 操作符,该操作符的两侧均为函数类型,且能够将 + 操作符的左参函数的返回值作为右参函数的入参。从而实现了一种类似“链式调用”的效果。 运算符非常基础,大多数语言都将它们作为编译器(或解释器)的一部分进行处理。 但是 Swift 编译器并不对大多数操作符…
Swift Tips 019 - Chaining optionals with map() and flatMap()
截图里 BEFORE 和 AFTER 在代码逻辑上完全一致,只是使用了两种不同的编码风格。前一种使用了常见的可选绑定,方法调用等手段,而后一种仅仅通过使用高阶函数就完成了所有的功能。 乍一看,它们都是接受一个名为 transform 闭包作为参数并且整个方法的返回值是一个数组。…
Swift Tips 018 - Using self-executing closures for lazy properties
代码截图里的核心点是在于 StoreViewController 里的 collectionView 属性不仅是一个延时加载存储属性,还采用了闭包的方式初始化属性缺省值。 延时加载属性是指当第一次被调用的时候才会计算其初始值的属性。在属性声明前使用 lazy 来标识一个延时加载…
Swift Tips 017 - Speeding up Swift package tests
Swift Package Manager(Swift 包管理器,一般简称 SwiftPM 或者 SPM)是苹果官方提供的一个用于管理源代码分发的工具,旨在使分享代码和复用其他人的代码变得更加容易。该工具可以帮助我们编译和链接 Swift Packages,管理依赖关系、版本控…
Swift Tips 016 - Avoiding mocking UserDefaults
代码截图里是一个关于模拟登录的单测用例,在这个测试用例中,测试的结果是与用户的 UserDefaults 设定相关联,所以需要在 setup() 方法中设置好初始状态。 我们可以看到代码里根据 #file(包含这个符号的文件的路径)创建了一个 UserDefaults 对象,并…
Swift Tips 015 - Using variadic parameters
这段代码为 Canvas 类拓展了一个名为 add(_ shapes: Shape...) 的函数,由于不确定函数的入参个数,这里使用了可变参数作为入参,即 Shape...。 紧接着,我们定义了 circle, lineA, lineB 等三个图形,并将其添加到名为 canv…
Swift Tips 014 - Referring to enum cases with associated values as closures
代码最开始定义一个名为 UnboxPath 的枚举类型,它有两个枚举值,一个成员值的名称叫做 key,具有 String 类型的关联值,另一个成员值的名称是 keyPath,具有 String 类型的关联值。 紧接着,代码里定义了一个名为 UserSchema 的结构体,它有三…
Swift Tips 013 - Using the === operator to compare objects by instance
在代码截图中,我们看到 Enemy 通过 InstanceEquatable 拓展遵循了 Equatable 协议并重载了 == 运算符。声明了只有内存地址相等的状态下才符合 == 的定义,此时 == 与 === 的含义相同。 在这个前提下,调用 contains 函数的含义就…
Swift Tips 012 - Calling initializers with dot syntax and passing them as closur
今天的代码截图提到了 Swift 构造器的另一种使用方法,即用点语法(dot syntax)获取实例或者获取构造方法本身。 在获取实例上,使用点语法与我们常用的实例生成方式没有区别,例如下面的代码,a 和 b 都是 Fahrenheit 的一个实例,没有什么区别。 而在获取构造…
下一页
个人成就
文章被点赞
87
文章被阅读
29,859
掘力值
646
关注了
6
关注者
31
收藏集
1
关注标签
14
加入于
2016-04-28