- 在本类的属性必须完成初始化之后, 再调用父类初始化的方法
- 在同一个文件夹下所有的东西是共享的 不用引入头文件
- 调用堆栈里边的小人一般为自己写的
- 所有的构造函数都是init
- 重载就是函数名相同, 参数个数/参数名/参数类型 override是重写
- 重写和重载的区别
重写: 子类去重写父类的方法, 需要对子类进行一定的扩展
重写需要用关键字 override
重载方法名相同参数个数/参数名称/参数类型不同
- 如果重载狗在函数但是没有实现默认的狗在函数init()系统不再提供默认的构造函数
- kvc 运行时 系统动态的给属性赋值 属性有内存 给实例化对象发送
- 子类可以继承父类的kvc构造函数
- 便利构造函数返回的类可能为nil
便利构造函数,需要调用其他的构造函数,来完成初始化 要用self.init---
便利构造函数的关键字 convenience
子类的便利构造函数继承了父类的便利构造函数
即便复制父类的 便利构造函数,到子类中也不会调用父类的遍历构造函数
- 定义一个_name var _name:String?
var name: String?{
get{
ret _name
}
set {
_name = newValue
}
}
- private 定义成私有的
只读 只在方法中写get方法
- 懒加载
lazy var person: Person = {return Person()}()
lazy var demoPerson: Person = Person()
let personFunc = {() -> Person in return Person()}
lazy var demoPerson:Person = self.personFunc()
- extentsion 类似于category 来添加方法, 添加方法只能作为区分代码块使用, 不能像category那样调用方法 数据源方法 只能放至方法 不能放置属性
extentsion ViewController{ }
- as(默认) 一般应用于String 转换成 NSString , array 转NSArray 系统的东西转
as! (强转) 告诉就是后面的哪种类型 应用于我们自己定义的类
as? (可选) 告诉不一定是后面的类型
- 可选项的针对方案 第一个让系统去提示我们,然后就分析
第二个 多敲
- 在cell中用 didSet 就相当于 oc 重写set方法
var person: Person?{didSet{ nameLabel.text = person?.name ageLabel.text = "\(person?.age ?? 0)"}}
- textField.hashText() 有值的话
28.swift高级
最新推荐文章于 2023-02-14 14:51:29 发布