Swift14/90Days - 自动引用计数

2014-11-30
阅读 2 分钟
1.6k
可以在前面加上 unowned 表明这是一个无主引用。和弱引用类似,无主引用不会牢牢保持住引用的实例。和弱引用不同的是,无主引用是永远有值的。因此,无主引用总是被定义为非可选类型。

Swift13/90Days - 协议

2014-11-29
阅读 2 分钟
2.1k
一个协议可由多个协议采用 protocol<SomeProtocol, AnotherProtocol> 这样的格式进行组合,称为协议合成(protocol composition)。

Swift12/90Days - 类型转换

2014-11-28
阅读 1 分钟
2.2k
可以用类型转换操作符 as 尝试将某个实例转换到它的子类型。转换没有真的改变实例或它的值。潜在的根本的实例保持不变;只是简单地把它作为它被转换成的类来使用。

Swift11/90Days - 蛋疼的初始化过程

2014-11-27
阅读 4 分钟
5.5k
蛋疼的初始化过程 阶段构造 Swift 的构造过程分为两个阶段: 第一个阶段,每个存储型属性通过引入自己的构造器来设置初始值。 第二个阶段,在新实例准备使用之前进一步定制存储型属性。 安全检查 在构造的过程中, Swift 会进行四种安全检查。 安全检查 1 指定构造器必须保证它所在类引入的所有属性都必须先初始化完成,...

Swift10/90Days - 属性

2014-11-26
阅读 2 分钟
2.4k
在 Swift 中用 lazy 标记即可,注意,一定要是 var 定义的变量才行,而且要是 class 或者 struct 的属性。注意,全局属性是不需要 lazy 标记的延时加载属性。如果需要延时加载,可以把延时加载的内容放在一个闭包里:

Swift09/90Days - 枚举

2014-11-25
阅读 3 分钟
3.1k
比如下面这个 Barcode 的例子。枚举类中定义了两种条形码,一种是普通的条形码 UPCA ,存储四个 Int 值;另一种是二维码 QRCode ,存储一个字符串的值:

Swift08/90Days - 闭包

2014-11-24
阅读 3 分钟
3.1k
闭包 简介 (真的很简) 闭包的完整形态是这个样子的: {代码...} 写在一行里就是这样: {代码...} 形式 闭包以三种形式存在: {代码...} 捕获值 闭包可以捕获上下文的值,然后把它存储下来。至于存储的是引用还是拷贝,Swift 会决定捕获引用还是拷贝值,也会处理变量的内存管理操作。 下面这个例子可以说明很多问题: {代...

Swift07/90Days - 柯里化

2014-11-23
阅读 5 分钟
4.2k
Swift 中的柯里化 新手上路的学习笔记,如有错误还望指出,不胜感激。 上集:理论预备 在学习柯里化的过程中接触到了三个有趣的概念,在此和各位分享一下。 偏函数 (Partial Function) 偏函数是只对函数定义域的一个子集进行定义的函数,是一个数学概念。 偏函数定义如下: 从输入值集合 X 到可能的输出值集合 Y 的函数 ...

Swift06/90Days - 函数

2014-11-22
阅读 7 分钟
2.7k
函数 参数 外部变量名 一般情况下你可以不指定外部变量名,直接调用函数: {代码...} 但是在类 (或者结构、枚举) 中的时候,会自动分配外部变量名 (第一个除外) ,这时候如果还想直接调用就会报错了: {代码...} 如果你怀念在 OC 中定义函数名的方式,可以继续这样定义,比如 helloWithName 这种,隐藏第一个函数的外部...

Swift05/90Days - 控制流

2014-11-21
阅读 4 分钟
1.9k
文档原文是 No Implicit Fallthrough ,粗暴的翻译一下就是:不存在隐式贯穿。其中 Implicit 是一个经常出现的词,中文原意是:“含蓄的,暗示的,隐蓄的”。在 Swift 中通常表示默认处理。比如这里的隐式贯穿,就是指传统的多个 case 如果没有 break 就会从上穿到底的情况。再例如 implicitly unwrapped optionals ,隐式...

Swift04/90Days - 习题课

2014-11-20
阅读 4 分钟
2.7k
习题笔记 今天解决一下 Higher Order Functions: Map, Filter, Reduce and more – Part 1 中最后的13个练习题,主要是关于闭包的(咦不对啊我明明是想看集合方面内容的。。。)。 Write a function applyTwice(f:(Float -> Float),x:Float) -> Float that takes a function f and a float x and aplies f to x twi...

Swift03/90Days - 集合类型

2014-11-20
阅读 4 分钟
3.4k
除了普通的初始化方法,我们可以通过 init(count: Int, repeatedValue: T) 来初始化一个数组并填充上重复的值:

Swift02/90Days - 字符串

2014-11-19
阅读 1 分钟
2.2k
String 中的字符串是值类型,传递的时候会对值进行拷贝,而 NSString 的字符串传递则是引用。我们可以用 for in 遍历字符串:

Swift01/90Days - 空值合并运算符和区间运算符

2014-11-19
阅读 3 分钟
7.4k
空值合并运算符和区间运算符 今天主要看的内容是 Swift 中的基本运算符。记录一下。 Nil Coalescing Operator a ?? b 中的 ?? 就是是空值合并运算符,会对 a 进行判断,如果不为 nil 则解包,否则就返回 b 。 {代码...} 使用的时候有以下两点要求: a 必须是 optional 的 b 必须和 a 类型一致 也就是说,a 一定要有被备...