Swift学习笔记(持续更新...)
3月24日(周四)
1、元组(Array)的使用场景
元组在临时组织值的时候很有用,但是并不适合创建复杂的数据结构。如果数据结构并不是临时使用,使用类或者结构体更为恰当。
2、Swift 与 Objective-C 中的 nil 的区别
在Objective-C中, nil表示指向对象的指针为空。在Swift中, nil不是指针,它是一个确定的值,用来表示值缺失,任何类型的可选状态都可以被设置为nil ,不只是对象类型。
备注:OC中其它空的的概念,NULL表示C指针为空,Nil表示OC类为空,NSNUll通过对象方法[NSNull null]表示一个空对象,通常用作占位。
3、Swift中惊叹号( !)的用法
可选值后面加感叹号( ! )表示强制解析,特别要注意的是,使用( ! )来获取一个不存在的可选值会导致运行时错误,在使用( ! )来强制解析值之前,一定要确定可选包含一个非 nil 的值。针对此种特殊情况往往会使用 可选绑定 来判断可选值是否为 nil,代码如下:
if let value = yourValue! {
yourValue 强制拆包后将值赋给 value,if 判断value不为 nil 时在进行后续操作
}
4、Swift中使用KVC需要注意
Swift中使用KVC为模型赋值,对于基本类型(例如Int,float),必须赋初值,否则不会为其分配存储空间。
4月9日(周六)
5、Swift中的值类型和引用类型(reference)
值类型:当发生赋值行为时(赋值给一个变量、常量或在函数传参)中发生的是值拷贝;其中包括Int、Float、Double、String、array、dictionary、Character、Struct、Enum,除了Enum,其余类型在底层都是由结构体实现的,结构体是值类型。
引用类型:当发生赋值行为时,传递的是引用而不是值的拷贝;中期所有类(Class)都是引用类型,函数和闭包也是引用类型。
注:Swift中提供了两个非常有用的操作符===和!==,这两个运算符用于判断两个类变量是否指向同一个类实例。相当于引用所指向内存地址是否相同
6、Swift中的Array(元组)OC中的NSArray 区别
Array:本质是结构体,为值类型,在声明时若明确指出可存储类型(例如:[NSInteger]()),就无法储存其他类型元素,若想存储任意类型需声明为 [AnyObject]()。
NSArray:继承于NSObject,为引用类型(reference),NSArray无需特殊的声明就可以存储任意类型的值。
备注:String、Dictionary和Array一样也都是结构体、值类型。
4月28日(周四)
7、总结几个Swift中的语法糖
1>Map,遍历数组方法,并可以在遍历过程中传入函数对数组中的元素进行操作:
EX:为字符串数组中没有”LC”后缀的字符串,添加”LC”后缀
2>利用元组交换两个『相同』类型变量的值