您的位置:首页 > 移动开发 > Swift

28.swift高级

2016-03-23 13:21 357 查看
在本类的属性必须完成初始化之后,
再调用父类初始化的方法

在同一个文件夹下所有的东西是共享的
不用引入头文件

调用堆栈里边的小人一般为自己写的

所有的构造函数都是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()
有值的话
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: