Swift中的初始化方法

1、初始化方法顺序
2、Designated,Convenience和Required
3、初始化方法返回nil

1、初始化方法顺序
  • 一般来说,子类的初始化顺序是:
    I、设置子类自己需要初始化的参数,power = 10
    II、调用父类的相应的初始化方法,super.init()
    III、对父类中的需要改变的成员进行设定,name = “tiger”
    其中第三步是根据具体情况决定的,如果我们在子类中不需要对父类的成员做出改变的话,就不存在第三步。而在这种情况下,Swift会自动地对父类的对应init方法进行调用,也就是说,第二步的super.init()也是可以不用写的(但实际上还是调用的,只不过是为了简便Swift帮我们完成了)。
2、Designated,Convenience和Required
  • 注意在init里我们可以对let的实例变量进行赋值,这是初始化方法的重要特点。
  • designated初始化方法就是OC中的全能初始化方法。
  • convenience初始化方法就是在其中调用了designated初始化方法的初始化方法。
  • convenience初始化方法是不能被子类重写或者是从子类中以super的方式被调用的。只要在子类中实现重写了父类convenience方法所需要的init方法的话,我们在子类中就也可以使用父类的convenience初始化方法了。
  • 初始化方法永远遵守以下两个原则:
    I、初始化路径必须保证对象完全初始化,这可以通过调用本类型的designated初始化方法来得到保证
    II、子类的designated初始化方法必须调用父类的designated方法,以保证父类也完成初始化。
  • 对于某些我们希望子类中一定实现的designated初始化方法,我们可以通过添加required关键字进行限制,强制子类对这个方法重写实现。这样做的最大的好处是可以保证依赖于某个designated初始化方法的convenience一直可以被使用。
  • 对于convenience的初始化方法,我们也可以加上required以确保子类对其进行实现。这在要求子类不直接使用父类中的convenience初始化方法时非常有帮助。
3、初始化方法返回nil
  • 在Swift中默认情况下初始化方法是不能写return语句来返回值的。
  • 可能返回nil的init方法都加上?标记
    convenience init?(string URLString: String) //调用该初始化方法返回的值是Optional类型,通过Optional Binding,我们就能知道初始化是否成功,并安全的使用他们了。

你可能感兴趣的:(Swift中的初始化方法)