swift 笔记

swift 笔记
fileprivate 和 private
fileprivate 私有,文件内和扩展可以使用该变量
private 绝对私有,只能在类或者结构体内使用

static 在func 关键字之前
指定类方法,可被子类重写
class 在func 关键字之前
指定类方法,不能被子类重写,包含final特性
final 可以把属性,下标,等标记wei final 即可防止子类重写
http://www.jianshu.com/p/a9c9e7313438

关于as http://www.jianshu.com/p/edbdc60218d1

as  keyword:Guaranteed conversion、 Upcasting
    理解:字面理解就是有保证的转换,从派生类转换为基类的向上转型
        // 将1转成float
        let num = 1 as CGFloat
        |------------------------
        // dog转换到父类animal
        class Animal {}
        class Dog: Animal {}
        let d = Dog()
        d as Animal

as!  keyword:Forced conversion、 Downcasting
        理解:字面理解就是有强项转换,即向下转型,子类(派生类)向父类转换,官方解释说这是一个不被保证的转换,可能会因为强转的失败而会导致崩溃。同时 !是一个陷阱的标志,就像⚠️一样,用起来存在一定危险性

        文/CoderTgg(作者)
        原文链接:http://www.jianshu.com/p/edbdc60218d1
        著作权归作者所有,转载请联系作者获得授权,并标注“作者”。
        // Dog到Animal的转化
        class Animal {}
        class Dog: Animal {}
        let a: Animal = Dog()
        a as Dog        // as不能将a转成Dog,即不能向下转换
        a as! Dog    // as!能强行将a转成Dog -> Bingo

as?   keyword: Optional、 Nil
      理解:Swfit代码写一段时间后会发现到处都是 ? ,这预示着如果转换不成功的时候便会返回一个 nil 对象。成功的话返回可选类型值(optional)。
      // Dog、Cat和Animal的转换关系
        class Animal {}
        class Cat: Animal {}
        class Dog: Animal {
        var name = "Spot"
        }
        let dog: Dog? = nil
        dog?.name        // 选择调用,返回空值nil
        dog!.name        // 强行调用,报错
        let animal: Animal = Cat()
        animal as? Dog    // 猫转狗失败,返回nil
        animal as! Dog    // 猫强行转狗,失败报错

在swift中有两种初始化方法,
1.指定初始化方法
- 指定初始化方法其实指的就是 init 方法
- 默认的init方法就是指定初始化方法
init方法不能嵌套使用
2.便利初始化方法
便利构造方法即在 init 方法前加上 convenience 关键字
从代码中我们可以得出结论:
1.便利构造方法必须调用指定构造方法,完成初始化,不能单独使用
2.便利构造方法可以嵌套使用,但最终都需要调用指定构造方法
3.指定构造方法不能嵌套使用
便利构造方法相比指定构造方法更加灵活,为我们开发提供方便,因为它更容易满足实际需要,我们在实际开发中,应根据需要来设计便利构造方法

required 修饰符 http://blog.csdn.net/jq2530469200/article/details/51672889
required修饰符的使用规则
1. required修饰符只能用于修饰类初始化方法。
2. 当子类含有异于父类的初始化方法时(初始化方法参数类型和数量异于父类),子类必须要实现父类的required初始化方法,并且也要使用required修饰符而不是override。
3. 当子类没有初始化方法时,可以不用实现父类的required初始化方法。

你可能感兴趣的:(swift 笔记)