swift面向对象
1. 在swift中,默认在同一个项目中(同一个命名空间下),所有的类都是共享的,不需要import 所有的属性 var 也可以直接访问到
2.在swift中,所有的类都默认有一个命名空间,就是项目名称
3. () -> alloc init。 swift中对应一个init()构造函数,作用是给成员变量分配内存空间并初始化
4.构造函数的写法:
一:必选属性的构造方法
1.给自己的属性分配内存空间并设置初始值
2.调用父类的构造函数,给父类的属性分配雷村空间设置初始值
3.NSObject没有属性,只有一个成员变量 isa
5.重载函数方法:函数名相同, 但是参数和个数不同。可以给自己的属性在外部调用的时候赋初始值。OC是没有重载的
6.如果重载了构造函数,并且没有实现父类的init方法, 系统将不再提供init() 构造函数。因为默认的构造函数是不能给本类的属性分配内存空间
7.控制台用 p 命令获取对象信息
8.构造函数(KVC),在手机开发中内存很宝贵,有些属性并不是必须分配空间的。
延迟加载:在需要的时候才创建
如果是模型属性的时候,如果是对象,通常都是可选的、简化写构造函数的时候的代码
KVC的方法是OC的方法,在运行时给对象发送消息,要求对象已经实例化完成!
在使用KVC方法之前,应该使用spuer.init()实例化
给基本数据类型初始化是不能设置成可选的,必须提前设置初始值。否则KVC会崩溃
如果是私有属性 private ,使用KVC设置值的时候,同样会无法设置,KVC会崩溃
在swift中,属性和方法设置private,是绝对禁止外部访问的!不会像OC中一样通过运行时获取到所有的方法和属性
同OC一样,字典中的key如果类中没有队形的属性与之对应,则需要重写setvalueforundifindkey
9.Swift 运行时加载属性列表:类似OC
1.获取’类’的属性列表
2.遍历数组
3.根据下标获取属性:objc_property_t?
4.获取属性的名称的C语言字符串
5.转换成string
6.释放C语言对象
7.推荐使用guard 依次判断可选项
10.基本数据类型,在OC中没有可选,如果定义成可选,运行时同样获取不到,使用KVC会崩溃
11.private 的属性,使用运行时是,同样获取不到属性,使用KVC会崩溃
12.闭包的所有参数是需要自己写的,OC是直接带入
13.练习用URLsession 加载百度
14.便利构造函数
1.判断条件,只有条件满足才实例化对象
2.简化对象的创建
3.本身不负责属性的创建和初始化操作
4.便利构造函数允许返回nil,正常的构造函数一定会创建对象,判定给的参数是否符合条件,如果不符合则返回nil,不会创建对象,减少内存开销!
5.只有便利构造函数中使用 ‘self.init’ 构造当前对象
6.没有convenience 关键字的构造函数是负责创建对象的,反之是用来检查条件的,本身是不负责对象的创建
7.如果要在便利构造函数中使用当前对象的属性,一定要在 self.init 之后
15.使用便利构造函数重构加法计算器
1.Swift分类的写法
2.利用便利构造函数 用分类的方式给一些控件的属性写默认值
16.实战1:写一个私人通讯录
//demo下载地址: