美文网首页
swift问题

swift问题

作者: 天蚕 | 来源:发表于2017-02-21 10:50 被阅读44次

    1、Must call a designated initializer of the superclass
    在控制器中使用init方法报错
    2、不要直接使用init方法做模型,不能为空
    3、扩展能为类添加新的便利构造器,但是它们不能为类添加新的指定构造器或析构器。指定构造器和析构器必须总是由原始的类实现来提供
    4、计算属性添加扩展
    extension Double {
    var km: Double { return self * 1_000.0 }
    var m : Double { return self }
    var cm: Double { return self / 100.0 }
    var mm: Double { return self / 1_000.0 }
    var ft: Double { return self / 3.28084 }
    }
    5、Swift 中,许多基本类型,诸如String,Array和Dictionary类型均以结构体的形式实现。这意味着被赋值给新的常量或变量,或者被传入函数或方法中时,它们的值会被拷贝。Swift 管理所有的值拷贝以确保性能最优化,所以你没必要去回避赋值来保证性能最优化。
    6、构造器
    结构体的逐一成员构造器
    为了简化指定构造器和便利构造器之间的调用关系,Swift 采用以下三条规则来限制构造器之间的代理调用:
    规则 1
    指定构造器必须调用其直接父类的的指定构造器。
    规则 2
    便利构造器必须调用同一类中定义的其它构造器。
    规则 3
    便利构造器必须最终导致一个指定构造器被调用。
    一个更方便记忆的方法是:
    指定构造器必须总是向上代理
    便利构造器必须总是横向代理
    可失败构造器(eg:init?())
    可失败构造器的参数名和参数类型,不能与其它非可失败构造器的参数名,及其参数类型相同。这里所指的“失败”是指,如给构造器传入无效的参数值,或缺少某种所需的外部资源,又或是不满足某种必要的条件等。严格来说,构造器都不支持返回值。因为构造器本身的作用,只是为了确保对象能被正确构造。因此你只是用return nil表明可失败构造器构造失败,而不要用关键字return来表明构造成功
    必要构造器
    在类的构造器前添加required修饰符表明所有该类的子类都必须实现该构造器。如果子类继承的构造器能满足必要构造器的要求,则无须在子类中显式提供必要构造器的实现
    7、使用可选链式调用代替强制展开
    8、final
    你可以通过把方法,属性或下标标记为final
    来防止它们被重写,只需要在声明关键字前加上final
    修饰符即可(例如:final var
    ,final func
    ,final class func
    ,以及final subscript
    )。
    如果你重写了final
    方法,属性或下标,在编译时会报错。在类扩展中的方法,属性或下标也可以在扩展的定义里标记为 final 的。
    你可以通过在关键字class
    前添加final
    修饰符(final class
    )来将整个类标记为 final 的。这样的类是不可被继承的,试图继承这样的类会导致编译报错。

    相关文章

      网友评论

          本文标题:swift问题

          本文链接:https://www.haomeiwen.com/subject/jwhdlttx.html