swift学习要点摘要11-18
2014-10-09 10:52
204 查看
11.方法
方法的局部参数名称和外部参数名称:
func incrementBy(amount: Int, numberOfTimes: Int){} => counter.incrementBy(5, numberOfTimes: 3)
Swift 默认仅给方法的第一个参数名称一个局部参数名称;默认同时给第二个和后续的参数名称局部参数名称和外部参数名称。
在实例方法中修改值类型:方法定义时加上mutating关键字,这让方法可以修改值类型的属性。
mutating func moveByX(deltaX: Double, y deltaY: Double) {}
声明类的类型方法,在方法的func关键字之前加上关键字class,声明结构体和枚举的类型方法,在方法的func关键字之前加上关键字static。
12.附属脚本
字典利用附属脚本存取值:var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]; numberOfLegs["bird"] = 2
13.继承
属性观察器:可以为类中继承来的属性添加属性观察器,当属性值改变时,累就会被通知到。
重写:子类可以为继承来的实例方法,类方法,实例属性,类属性,附属脚本提供自己定制的实现,在重新定义的前面加上override关键字。
防止重写:通过把方法,属性或附属脚本标记为final来防止被重写。@final var, @final func, @final class func, @final subscript。
14.构造过程
当你为存储型属性设置默认值或者在构造器中为其赋值时,它们的值是被直接设置的,不会触发任何属性观测器。
指定构造器:是类中最主要的构造器,将初始化类中提供的所有属性,并调用父类的构造器来实现父类的初始化。
init(parameters) { statements }
便利构造器:是类中比较次要的,辅助性的构造器。
convenience init(parameters) { statements }
与方法,属性和下标不同,在重载构造器时没有必要使用关键字override。
15.反初始化
反初始化函数:反初始化函数不带任何参数,在写法上不带括号:deinit { //执行反初始化 }
16.自动引用计数
强引用:只用将一个类的实例赋值给一个属性或者常量或者变量,这个属性或常量或变量就是这个实例的强引用。只要强引用还存在,就不能销毁实例。
var reference1: Person?; reference1 = Person(name: "John Appleseed"); reference2 = reference1
强引用环:在两个类实例彼此保持对方的强 引用,使得每个实例都使对方有效时会发生这种情况。
弱引用:弱引用不会增加实例的引用计数,因此不会阻止ARC销毁被引用的实例。strong / weak
因为弱引用可以没有值,所以弱引用必须声明为可选类型的。即使弱引用存在,ARC也有可能会销毁实例,并将弱引用赋值为nil。
无主引用:在实例的生命周期中引用会变为nil的实例用弱引用。如果整个生命周期内引用都有值,则用无主引用,只能声明为非可选类型。unowned
非可选类型不能赋值为nil,因此当实例被销毁的时候,ARC无法将引用赋值为nil。当实例被销毁后,试图访问该实例的无主引用会触发运行时错误。
Person和Apartment的例子说明的场景:两个属性的值都可能是nil,并有可能产生强引用环。适合使用弱引用。
Customer和CreditCard的例子说明的场景:一个属性可以是nil,另外一个属性不允许是nil,并有可能产生强引用环。适合使用无主引用。
第三种场景:两个属性都必须有值,且初始化完成后不能为nil。适合一个类用无主应用属性,另外一个类用隐式展开的可选属性。
17.自判断链接
自判断链接:是一种可以请求和调用属性,方法及子脚本的过程。
18.类型转换
类型检查操作符(is):检查一个实例是否属于特定子类型。if item is Movie { }
类型转换操作符(as):可选形式(as?):总是返回一个可选值(转换成功值或nil)。强制形式(as):转换失败时会触发runtime error。
AnyObject:可以代表任何class类型的实例。Any:可以表示任何类型,除了方法类型(function types)。
方法的局部参数名称和外部参数名称:
func incrementBy(amount: Int, numberOfTimes: Int){} => counter.incrementBy(5, numberOfTimes: 3)
Swift 默认仅给方法的第一个参数名称一个局部参数名称;默认同时给第二个和后续的参数名称局部参数名称和外部参数名称。
在实例方法中修改值类型:方法定义时加上mutating关键字,这让方法可以修改值类型的属性。
mutating func moveByX(deltaX: Double, y deltaY: Double) {}
声明类的类型方法,在方法的func关键字之前加上关键字class,声明结构体和枚举的类型方法,在方法的func关键字之前加上关键字static。
12.附属脚本
字典利用附属脚本存取值:var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]; numberOfLegs["bird"] = 2
13.继承
属性观察器:可以为类中继承来的属性添加属性观察器,当属性值改变时,累就会被通知到。
重写:子类可以为继承来的实例方法,类方法,实例属性,类属性,附属脚本提供自己定制的实现,在重新定义的前面加上override关键字。
防止重写:通过把方法,属性或附属脚本标记为final来防止被重写。@final var, @final func, @final class func, @final subscript。
14.构造过程
当你为存储型属性设置默认值或者在构造器中为其赋值时,它们的值是被直接设置的,不会触发任何属性观测器。
指定构造器:是类中最主要的构造器,将初始化类中提供的所有属性,并调用父类的构造器来实现父类的初始化。
init(parameters) { statements }
便利构造器:是类中比较次要的,辅助性的构造器。
convenience init(parameters) { statements }
与方法,属性和下标不同,在重载构造器时没有必要使用关键字override。
15.反初始化
反初始化函数:反初始化函数不带任何参数,在写法上不带括号:deinit { //执行反初始化 }
16.自动引用计数
强引用:只用将一个类的实例赋值给一个属性或者常量或者变量,这个属性或常量或变量就是这个实例的强引用。只要强引用还存在,就不能销毁实例。
var reference1: Person?; reference1 = Person(name: "John Appleseed"); reference2 = reference1
强引用环:在两个类实例彼此保持对方的强 引用,使得每个实例都使对方有效时会发生这种情况。
弱引用:弱引用不会增加实例的引用计数,因此不会阻止ARC销毁被引用的实例。strong / weak
因为弱引用可以没有值,所以弱引用必须声明为可选类型的。即使弱引用存在,ARC也有可能会销毁实例,并将弱引用赋值为nil。
无主引用:在实例的生命周期中引用会变为nil的实例用弱引用。如果整个生命周期内引用都有值,则用无主引用,只能声明为非可选类型。unowned
非可选类型不能赋值为nil,因此当实例被销毁的时候,ARC无法将引用赋值为nil。当实例被销毁后,试图访问该实例的无主引用会触发运行时错误。
Person和Apartment的例子说明的场景:两个属性的值都可能是nil,并有可能产生强引用环。适合使用弱引用。
Customer和CreditCard的例子说明的场景:一个属性可以是nil,另外一个属性不允许是nil,并有可能产生强引用环。适合使用无主引用。
第三种场景:两个属性都必须有值,且初始化完成后不能为nil。适合一个类用无主应用属性,另外一个类用隐式展开的可选属性。
17.自判断链接
自判断链接:是一种可以请求和调用属性,方法及子脚本的过程。
18.类型转换
类型检查操作符(is):检查一个实例是否属于特定子类型。if item is Movie { }
类型转换操作符(as):可选形式(as?):总是返回一个可选值(转换成功值或nil)。强制形式(as):转换失败时会触发runtime error。
AnyObject:可以代表任何class类型的实例。Any:可以表示任何类型,除了方法类型(function types)。
相关文章推荐
- swift学习要点摘要19-23(完结)
- swift学习要点摘要1-10
- 2012/11/(11-18) 学习技术资料整理
- Swift编程语言学习11—— 枚举全局变量、局部变量与类型属性
- swift 学习- 18 -- 自动引用计数
- 读《从零开始学习jQuery》要点摘要供复习记忆
- Swift 系统学习 18 结构体 改变结构体里面的元素
- Swift 系统学习 11 函数 函数的声明 和调用 下划线 调用的时候 忽略参数名
- Swift学习笔记系列——(18)造型
- Swift学习:11.控制流
- swift 学习- 11 -- 属性
- Swift学习记录 -- 18. 便利构造函数
- 11. JAVA常用类库 Part 5 (正则表达式、定时调度、本章要点) ----- 学习笔记
- Swift编程语言学习11—— 枚举全局变量、局部变量与类型属性
- Swift 4.0 学习之基础摘要二
- swift 学习笔记(11)-空合运算符
- swift 学习笔记(18)-函数
- Swift 4.0 学习之基础摘要一
- 18. JAVA 图形界面 Part 3(表格JTable、本章要点、习题) ----- 学习笔记
- Swift学习记录 -- 11.函数的基本使用