28.swift高级

来源:互联网 发布:linux查看端口号命令 编辑:程序博客网 时间:2024/05/04 03:08
    1. 在本类的属性必须完成初始化之后,再调用父类初始化的方法
    2. 在同一个文件夹下所有的东西是共享的不用引入头文件
    3. 调用堆栈里边的小人一般为自己写的
    4. 所有的构造函数都是init
    5. 重载就是函数名相同,参数个数/参数名/参数类型 override是重写

     

    1. 重写和重载的区别

    重写:子类去重写父类的方法,需要对子类进行一定的扩展

    重写需要用关键字override

    重载方法名相同参数个数/参数名称/参数类型不同

     

    1. 如果重载狗在函数但是没有实现默认的狗在函数init()系统不再提供默认的构造函数
    2. kvc运行时 系统动态的给属性赋值 属性有内存 给实例化对象发送
    3. 子类可以继承父类的kvc构造函数

     

    1. 便利构造函数返回的类可能为nil  

    便利构造函数,需要调用其他的构造函数,来完成初始化  要用self.init---

    便利构造函数的关键字 convenience

    子类的便利构造函数继承了父类的便利构造函数

    即便复制父类的便利构造函数,到子类中也不会调用父类的遍历构造函数

     

    1. 定义一个_name  var _name:String?

    var name: String?{

    get{

    ret _name

    }

    set {

    _name = newValue

    }

    }

     

    1. private定义成私有的  

    只读只在方法中写get方法

     

    1. 懒加载

    lazy varperson: Person = {return Person()}()

    lazy vardemoPerson: Person = Person()

    let personFunc = {() -> Personin return Person()}

    lazy var demoPerson:Person = self.personFunc()

     

    1. extentsion类似于category来添加方法,添加方法只能作为区分代码块使用,不能像category那样调用方法  数据源方法   只能放至方法不能放置属性

    extentsion ViewController{   }

     

    1. as(默认)一般应用于String转换成 NSString ,arrayNSArray 系统的东西转

    as! (强转)告诉就是后面的哪种类型  应用于我们自己定义的类

    as? (可选)告诉不一定是后面的类型

     

    1. 可选项的针对方案 第一个让系统去提示我们,然后就分析

    第二个多敲

     

    1. cell中用didSet就相当于oc重写set方法

    var person: Person?{didSet{ nameLabel.text = person?.name  ageLabel.text = "\(person?.age  ??  0)"}}

     

    1. textField.hashText()  有值的话
0 0
原创粉丝点击