《Swifter Tips》 读书笔记(2)

1.通常我们使用字面量来快速创建类型,如

let aNumber = 3
let aString = "Hello" 
let aBool = true
let anArray = [1,2,3] 
let aDictionary = ["key1": "value1", "key2": "value2"]

是因为这些类型实现了如下接口:

ArrayLiteralConvertible
BooleanLiteralConvertible
DictionaryLiteralConvertible
FloatLiteralConvertible
NilLiteralConvertible
IntegerLiteralConvertible
StringLiteralConvertible

2.AnyObject 可以代表任何 class 类型的实例
Any 可以表示任意类型,甚至包括方法 (func) 类型

3.typealias是用来为已经存在的类型重新定义名字的

4.swift中的可变参数与其他语言不一样,其他语言为了能让编译器知道可变参数有多少个,在哪里截断,通常可变参数都只能放在函数的最后一个参数,但是swift不存在这个问题,因为调用swift函数的时候,是要写参数名称的;但是也有限制,比如参数类型都要相同,而且函数只能有一个参数是可变的

5.在某个类的子类中,初始化方法语句的顺序并不是随意的,我们需要保证在当前子类实例的成员初始化完成后才能调用父类的初始化方法

一般来说,子类的初始化顺序是:

  • 设置子类自己需要初始化的参数
  • 调用父类的相应的初始化方法
  • 对父类中的需要改变的成员进行设定

定义 init 方法必须遵循三条规则
指定构造器必须调用它直接父类的指定构造器方法.
便利构造器必须调用同一个类中定义的其它初始化方法.
便利构造器在最后必须调用一个指定构造器.

6.指定构造器(Designated)、便捷构造器(Convenience)、Require关键字
Swift 中不加修饰的init 方法都需要在方法中保证所有非Optional的实例变量被赋值初始化,Optional类型的变量如果不设置初始值,则默认设置为nil;
关于构造器init,参考博文 http://my.oschina.net/hejunbinlan/blog/470123#OSC_h4_5

推荐阅读更多精彩内容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 893评论 1 3
  • 官方文档 初始化 Initialization是为准备使用类,结构体或者枚举实例的一个过程。这个过程涉及了在实例里...
    hrscy阅读 402评论 0 1
  • 123.继承 一个类可以从另外一个类继承方法,属性和其他特征。当一个类继承另外一个类时, 继承类叫子类, 被继承的...
    无沣阅读 489评论 2 3
  • 常量与变量使用let来声明常量,使用var来声明变量。声明的同时赋值的话,编译器会自动推断类型。值永远不会被隐式转...
    莫_名阅读 48评论 0 0
  • 本章将会介绍 存储属性的初始赋值自定义构造过程默认构造器值类型的构造器代理类的继承和构造过程可失败构造器必要构造器...
    寒桥阅读 181评论 0 0