关键点
- 在Swift中,默认同一个项目中(同一个命名空间下),所有的类都是共享的,不需要import
构造函数
作用
- 给成员分配空间
- 初始化成员变量
- 调用父类的构造函数 - 给父类属性分配空间 & 设置初始值
- 如果子类重载父类的构造函数,且子类没有重写父类的构造函数,那么此时子类不会对外部提供init方法了
关键字
- init 构造函数
- override 重写
- orderload 重载
KVC构造函数
- 定义模型属性的时候,如果是对象,通常是可选
- 在需要的时候创建
- 避免写构造函数,可以简化代码
- 如果是基本数据类型,不能设置成可选的,而且要设置初始值,否则KVC会崩溃
- 如果需要使用 KVC 设置数值,这个属性不能是 private 的
- 使用KVC方法之前,应该调用super.init保证对象实例化完成
运行时获取属性列表
class func propertyList() -> [String] { var count: UInt32 = 0 let list = class_copyPropertyList(self, &count) for i..<int (count) { let ptr = list?[i] let cName = property_getName(pty!) ley name = String(utf8String: cName) print(name) } return [] }
便利构造函数
- 条件判断,只有满足条件,才实例化对象,可以防止造成不必要的内存开销
- 简化对象的创建
- 本身不负责属性的创建和初始化工作
特点
- 便利构造函数允许返回nil
- 正常的构造函数一定创建对象
- 判断给定的参数是否满足条件,如果不符合条件,直接返回nil,不会创建对象,减少内存开销
- 只有遍历构造函数,才使用
self.init
构造当前对象- 没有convenience关键字的构造函数,是用来创建对象的;反之用来检查条件的,不负责对象的创建
- 如果要在遍历构造函数中使用当前对象的属性,一定要在
self.init
之后
这是一篇原创文章,如果您觉得有价值,可以通过捐赠来支持我的创作~
捐赠者会展示在博客的某个页面,钱将会用在有价值的地方,思考中...

