[iOS Swift 学习笔记]面向对象篇

看到此文,是否觉得体内洪荒之力爆发,饥渴难耐想吐槽、情不自禁想捐赠
本文为原创文章,尊重辛勤劳动,可以免费摘要、推荐或聚合,亦可完整转载,但完整转载需要标明原出处,违者必究。

支付宝微  信
在👆,可以查看所有关于[iOS Swift学习笔记]主题相关的文章

关键点

  • 在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 之后


这是一篇原创文章,如果您觉得有价值,可以通过捐赠来支持我的创作~
捐赠者会展示在博客的某个页面,钱将会用在有价值的地方,思考中...


分类: iOS, Swift, 技术, 随记 | 标签: , , , , , , | 评论 | Permalink

发表评论

电子邮件地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据