SF
SwiftGG翻译组
SwiftGG翻译组
注册登录
关注博客
注册登录
主页
关于
RSS
单例中静态属性的额外作用
SwiftGG翻译组
2017-01-10
阅读 2 分钟
2.5k
Laptopmini 给我留言道:「是否可以为单例 (singleton) 的共享实例 (shared instance) 定义一个 get 闭包呢?我现在正在编写一个网络 socket 管理器,我希望在每次调用 connect() 的时候都能够匹配到这个实例」。
在 iOS 的 SQLite 数据库中应用 FMDB 库
SwiftGG翻译组
2017-01-09
阅读 24 分钟
2.4k
在一款应用中,操作数据库和处理数据通常都是一个重要而且关键的部分。几个月前我所写的一篇文章曾经谈到过这个话题,那篇文章讲解了如何使用 SwiftyDB 来管理 SQLite 数据库。我今天再来探讨数据库的话题,不过这次我要介绍另一个你可能已经知道的库:FMDB。
新手教程:如何改变应用名称
SwiftGG翻译组
2017-01-06
阅读 2 分钟
2.6k
通常情况下,iPhone 屏幕首页上会展示 App 的默认名称。但有时候,我们需更改此名称。在本节教程中,我们会借助属性列表项(property list item)来改变 App 的展示名称。本节教程使用的是 Xcode 7.3.1 和 iOS 9.3。
通过 Core Graphics 绘制渐变颜色
SwiftGG翻译组
2017-01-05
阅读 3 分钟
3.5k
Core Graphics 是一套非常强大的底层 API 接口集合。在这篇教程中,我们将借助 Core Graphics 来创建渐变颜色。出于简便起见,我们将创建线性渐变 (linear gradients)。所谓线性渐变,是从一个点到另外一个点颜色过渡的描述。我们将会创建一个从左向右渐变的视图。该教程的实验环境是 Xcode 8 和 iOS 10。
iOS 10 本地通知教程
SwiftGG翻译组
2017-01-04
阅读 3 分钟
3.9k
当用户没有在前台使用某 App 的时候,通过本地通知(Local Notification)可以将消息推送给用户。iOS 10 里苹果公司引入了多信息通知 (rich notifications),其中可以包含不同类型的媒体内容。在本节教程中,我们将创建一个本地通知,其中包含了一个图片消息。本节教程使用的是 Xcode 8 和 iOS 10。
趣谈 iOS 10 UIKit 绘图
SwiftGG翻译组
2017-01-03
阅读 4 分钟
3.1k
我花费了几天时间用来尝试 iOS 10 中 UIGraphics 类中对于图片和 PDF 中的渲染功能。感觉很有意思。这次我来分享一下这个功能,并且将其与旧的版本对比一下。
如何阅读 Swift 标准库中的源码
SwiftGG翻译组
2016-12-30
阅读 4 分钟
2.7k
在进行完 GYP 预处理后,阅读 Swift 标准库源码的最简单的一种方式是执行一次完整的 Swift 编译。(另一种是写一小段 shell 脚本。可以看下面的更新)
自定义 Tab Bar 教程
SwiftGG翻译组
2016-12-29
阅读 2 分钟
3k
Tab Bar 用于快速切换不同模块之间的界面。在本节教程中,我们将来了解 Tab Bar 以及如何自定义 item。本节教程将使用 Xcode 8 和 iOS 10 来进行构建。
计时器教程
SwiftGG翻译组
2016-12-28
阅读 4 分钟
3.2k
作者:Arthur Knopper,原文链接,原文日期:2016-10-31译者:Crystal Sun;校对:星夜暮晨;定稿:CMB 本节教程讲述如何创建一个简单的计时器,其功能有开始、暂停和重置归零。本节教程将使用 Xcode 8 和 iOS 10 来进行构建。 打开 Xcode,创建一个 Single View Application。 点击 Next,product name 一栏填写 IOS10S...
混合构造器
SwiftGG翻译组
2016-12-27
阅读 2 分钟
2.4k
今天的内容非常简单,但是有些内容会让人产生困扰,通常出现在 extensions 的上下文或者和 RawRepresentable 的枚举值打交道的时候。
Swift 集合的 reduce 操作
SwiftGG翻译组
2016-12-26
阅读 2 分钟
2.4k
一位朋友问我:「在对集合执行 reduce 操作的时候,是否有比 .reduce(Set<String>()) { $0.union(CollectionOfOne($1)) } 更好的方法?」。这位朋友需要从一个外部数据源中获取相关的数据结果,然后将其填充到集合里。
泛型范围的用法
SwiftGG翻译组
2016-12-23
阅读 3 分钟
2.2k
我在前面的文章中提到过,Swift 中有两个基础的区间(Range)类型:Range 和 ClosedRange,并且这两个类型不能互相转换。这使得编写一个同时适用于两种区间类型的函数变得很困难。
Segmented Control 教程
SwiftGG翻译组
2016-12-22
阅读 3 分钟
2.2k
Segmented Control 用于展示一些用户可以选择的选项。每个 Segment 看起来像是一个单选按钮 (radio button),用户即便选中了某个选项,这个 Segment 仍保持“选中”状态。在本节教程里,我们会在 UISegmentedController 当中创建两个 Segment,每个 Segment 会让 Label 显示不同的文本内容。本节教程将使用 Xcode 8 和 iOS...
try? 与 as? 之间的优先级问题
SwiftGG翻译组
2016-12-21
阅读 1 分钟
1.8k
作者:Erica Sadun,原文链接,原文日期:2016-12-15译者:星夜暮晨;校对:Crystal Sun;定稿:CMB Tim Vermeulen 最近在 Swift Evolution 列表上,写到 try? 的优先级非常地出人意料: {代码...} 具体来说,他发现 try? 的优先级比 as? 的优先级低,所以需要添加括号,才能够获取正确的结果。 {代码...} 此外,他还发...
如何把字符串数组从 Swift 传递给 C
SwiftGG翻译组
2016-12-20
阅读 6 分钟
3.9k
Swift 允许我们将原生的字符串直接传递给一个接受 C String(即 char *)的 C API。 比如说,你可以在 Swift 里调用 strlen 函数,如下所示:
如何重用 watchOS 的 Paging Interface Controller
SwiftGG翻译组
2016-12-19
阅读 3 分钟
2.6k
目前为止,watchOS 的复用性都不是很好。即使每个界面都差不多,你也不得不在 storyboard 中把所有 Interface Controller 拖出来,就像下面这个 Italian Food 应用一样:
Swift 圣战:使用选项集时的中括号去留
SwiftGG翻译组
2016-12-16
阅读 2 分钟
1.9k
目前的 OptionSets 是通过协议的方式来实现的,从而使得未来相关 API 的持续演进成为可能。正如 Joe Groff 所指出:开发者可以将单个选项分解为多个精简的选项,与此同时仍然保留提供原始选项的能力。您可以在下面的例子当中看到相应的实现,其组合出了 energyStar 和 gentleStar 选项,而它们与那些使用移位标志 (bit-s...
基于 Swift 创建 CocoaPods 完全指南
SwiftGG翻译组
2016-12-15
阅读 8 分钟
5.8k
试想一下,有人开发了一个足以改变游戏规则、且具有划时代意义的库,并想把它分享给这个世界。这时候该怎么办?长话短说,我要说的是你需要知道如何发布自己的 CocoaPod!
教程:使用手势来拖动视图
SwiftGG翻译组
2016-12-14
阅读 3 分钟
3.8k
iOS 的优势在于可以触摸和手势交互。在本节教程中,我们会展示一些借助拖曳手势识别器 (pan gesture recognizer) 来进行拖拽的自定义视图 (views),本节教程使用 Xcode 8 和 iOS 10。
Swift 和 C 不得不说的故事
SwiftGG翻译组
2016-12-13
阅读 19 分钟
3.6k
从 Swift 开源到现在,只有短短的几个月时间,Swift 却已经被移植到了许多新的平台上,还有一些新的项目已经使用了 Swift。这类移植,每个月都在发生着。
Swift 圣战:注释不是反模式
SwiftGG翻译组
2016-12-12
阅读 2 分钟
1.6k
昨天,一位名叫安德鲁·华纳的开发者撰写的这篇文章引起了一些争论。文章标题“警惕注释的‘塞壬之歌’”(译者注:塞壬是希腊神话中的海妖,她的歌声极具迷惑性,会引起海啸等灾难)暗示了开发人员在自欺欺人,因为注释会降低代码的质量:
Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数
SwiftGG翻译组
2016-12-09
阅读 2 分钟
3.6k
作者:Erica Sadun,原文链接,原文日期:2016-11-08译者:星夜暮晨;校对:Crystal Sun;定稿:CMB 不久之前,Iain Delaney 给我发了这一幅图: 这幅由 Steve Luscher 设计的图,其内容来源于 Joey Devilla 的博客 Global Nerdy 中的一篇文章。我觉得这种做法相当有才,让人眼前一亮。 然而,这幅图不是用 Swift 编写的...
Swift 圣战:干净的命名空间
SwiftGG翻译组
2016-12-08
阅读 2 分钟
2.1k
sssilver 留言说:「我发现我司的代码普遍都是这种情况:每个类都包含了一堆的静态方法。我问同事为什么不直接编写方法,他们回答说是不想污染命名空间。在类似 Rust 之类的语言当中,所有内容都位于模块内部。那么在 Swift 当中常见的做法是如何呢?」
基于点阵图来构建 Bezier 路径
SwiftGG翻译组
2016-12-07
阅读 2 分钟
2.5k
我现在正在努力地编写那本关于 UIKit / Quartz 的书,书中描述了很多使用 Bezier 路径绘图的案例。今天,在进行了一天忙碌的写作之后,我现在决定好好休息、放松一下。
亮剑吧!枚举哈希值及选项集
SwiftGG翻译组
2016-12-06
阅读 2 分钟
2.4k
最近几天,我在 Swift 用户列表中参与了一个讨论,主题是怎样才能更好滴将包含字符串值的 JSON 数组转换为枚举集 (Enumeration Set)。我半开玩笑地建议:这些字符串值应该被转换到基于字符串的枚举当中,然后这些值的 hashValues 将用于设置标志位(flags)。
快捷之道:轻松地使用 DispatchTime
SwiftGG翻译组
2016-12-05
阅读 1 分钟
5.3k
这是篇拆开即食的福利小短文。我发现 DispatchTime 使用起来没有想象中便利。在一款 GUI 的应用中,我总是想要指定一个 TimeInterval,也就是以秒为单位的整数或者分数形式。
Defer; defer; defer
SwiftGG翻译组
2016-12-01
阅读 1 分钟
1.9k
有人问到关于 defer 的用法,以及 defer 语句被添加到栈里面的顺序。这可以很简单的创建一个类似于这样的测试集,然后你就可以自己观察他们的行为。
Swift 3 中的 GCD 与 Dispatch Queue
SwiftGG翻译组
2016-11-30
阅读 12 分钟
4.5k
串行执行以及伪多线程都已经成为了历史,如果你经历过老式电脑的时代,又或者你接触过搭载着旧操作系统的旧电脑,你就能轻易明白我的话。但是,不管 CPU 拥有多少个核心,不管它有多么强大,开发者如果不好好利用这些优势 ,那就没有任何意义。这时就需要使用到多线程以及多任务编程了。开发者不仅可以,而且必须要好好...
Swift:类型转换
SwiftGG翻译组
2016-11-29
阅读 6 分钟
2.4k
作者:Andyy Hope,原文链接,原文日期:2016-08-17译者:Cwift;校对:冬瓜;定稿:CMB 每隔一段时间,你都会遇到一些像独角兽一般前沿的情况,迫使你挑战你在当前的时代与领域内所积累的一切知识。而就在刚才我成为了这种情况的受害者。 在汉语中,“危机”一词由两个字符组成, 一个代表危险,另一个代表机会。— 约翰·...
Swift 的 falsiness
SwiftGG翻译组
2016-11-23
阅读 3 分钟
2.6k
在 Python 中,零和 None,以及空列表、字典和字符串,都有 falsy 值。 如果有 falsy 值,意味着可以它在 if 语句中使用,且可以使用 else。 例如,在 Python 中:
上一页
1
2
3
(current)
4
5
…
More
下一页
上一页
3
(current)
下一页