Swift2.0--文档学习笔记

前端之家收集整理的这篇文章主要介绍了Swift2.0--文档学习笔记前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
最近把 《The Swift Programming Language 中文版》粗略地看了一遍,并随手留了点笔记,以备忘。

1、闭包,通过闭包对字符串数组进行排序,闭包的函数体部分由关键字in引入

names.sort( { (s1: String,s2: String) -> Bool in return s1 < s2 } )
names.sort( { s1,s2 in return s1 > s2 } )(类型推断,推断参数类型)
names.sort( { s1,s2 in s1 > s2 } )(隐式返回,推断返回什么类型)
names.sort( { $0 > $1 } ) (参数名缩写,参数顺序调用
names.sort(>)(运算符函数,swift自动推断)

2、尾随闭包的使用

let digitNames = [
0: "Zero",1: "One",2: "Two",3: "Three",4: "Four",5: "Five",6: "Six",7: "Seven",8: "Eight",9: "Nine"
]
let numbers = [16,58,510]
let strings = numbers.map {
(var number) -> String in
var output = ""
while number > 0 {
output = digitNames[number % 10]! + output
number /= 10
}
return output
}
println(strings)
输出:[OneSix,FiveEight,FiveOneZero]

3、嵌套函数的捕获值
//传入Int ,返回()->Int
//被传入的Int被潜逃函数捕获,并持有,不断累加。
func makeIncrementor(forIncrement amount: Int) -> () -> Int {
var runningTotal = 0
func incrementor() -> Int {
runningTotal += amount
return runningTotal
}
return incrementor
}

override func viewDidLoad() {
super.viewDidLoad()

let dd = makeIncrementor(forIncrement: 7)
println(dd())   //7
println(dd())   //14

let ee = dd
println(ee())   //21
4、Swift 中字符串(String),数组(Array)和字典(Dictionary)类型均以结构体的形式实现。这意味着String,Array,Dictionary类型数据被赋值给新的常量或变量,或者被传入函数方法中时,它们的值会发生拷贝行为(值传递方式)。 5、延迟存储属性(lazy)来避免复杂类中不必要的初始化。 6、可以通过把方法属性或下标脚本标记为final来防止它们被重写 7、循环引用的解决方式 Person和Apartment的例子展示了两个属性的值都允许为nil,并会潜在的产生循环强引用。这种场景最适合用弱引用来解决。 Customer和CreditCard的例子展示了一个属性的值允许为nil,而另一个属性的值不允许为nil,这也可能会产生循环强引用。这种场景最适合通过无主引用来解决。 两个属性都必须有值,并且初始化完成后永远不会为nil。在这种场景中,需要一个类使用无主属性,而另外一个类使用隐式解析可选属性解决闭包引起的循环强引用,通过定义捕获列表。 8、internal:可以访问自己模块中源文件里的任何实体,但是别人不能访问该模块中源文件里的实体。 9、Swift中的private访问和其他语言中的private访问不太一样,它的范围限于整个源文件,而不是声明。 10、元组的访问级别与元组中访问级别最低的类型一致。 11、子类的访问级别不得高于父类的访问级别。

猜你在找的Swift相关文章