学习swift过程中发现在给一些系统控件扩展分类的时候用到了convenience关键字,比如下面这个UIButton的分类
经查阅资料,原因就是swift为了保证安全,有了严格的初始化方法,Swift 中不加修饰的 init 方法都需要在方法中保证所有非 Optional 的实例变量被赋值初始化,那么我们自己想要写个构造方法的时候把当前类所有非optional的实例变量被赋值初始化,那就变得非常麻烦了,所有这时候convenience方法就显得很方便了,这类方法是 Swift 初始化方法中的 “二等公民”,只作为补充和提供使用上的方便。convenience方法中必须调用self.init来保证非optional的实例变量被赋值初始化。
参考文章
网友评论