iOS 开发 -- Swift (十一) 便利构造函数
2016-02-26 19:13
399 查看
convenience 便利构造函数
目的
条件判断,只有满足条件,才实例化对象,可以防治造成不必要的内存开销简化对象的创建
本身不负责属性的创建和初始化工作
特点
默认情况下,所有的构造方法都是指定构造函数Designated
convenience关键字修饰的构造方法就是便利构造函数
便利构造函数具有以下特点:
可以返回
nil
只有便利构造函数中可以调用
self.init()
便利构造函数不能被
重载或者
super
便利构造函数主要用于条件监测或者简化对象创建
/** 便利构造函数的目的: 1. 条件判断 2. 简化对象的创建 3. 本身不负责属性的创建和初始化工作 */ convenience init?(dict: [String: AnyObject]) { // 判断是否包含姓名 guard let _ = dict["name"] as? String else { printLog("没有指定姓名") return nil } guard let age = dict["age"] as? Int else { printLog("没有指定年龄") return nil } if age > 100 || age < 0 { printLog("年龄不正确") return nil } // Convenience initializer for 'Person' must delegate (with 'self.init') rather than chaining to a superclass initializer (with 'super.init') // 遍历构造函数必须调用本类的 self.init,而不能调用父类的 super.init self.init() printLog(self.classForCoder) // Use of 'self' in method call 'setValuesForKeysWithDictionary' before super.init initializes self // 使用 self 调用 setValuesForKeysWithDictionary 之前需要调用 super.init 方法 // 只有确保对象已经被正确的实例化之后,才能向对象发送消息 setValuesForKeysWithDictionary(dict) }
便利构造函数应用场景
根据给定参数判断是否创建对象,而不像指定构造函数那样必须要实例化一个对象出来在实际开发中,可以对已有类的构造函数进行扩展,利用便利构造函数,简化对象的创建
构造函数小结
指定构造函数必须调用其直接父类的的指定构造函数(除非没有父类)便利构造函数必须调用同一类中定义的其他
指定构造函数或者用
self.的方式调用
父类的便利构造函数
便利构造函数可以返回
nil
便利构造函数不能被重载
相关文章推荐
- Swift中的?与!区别分析
- iOS 开发 -- Swift (十) 重载构造函数
- Swift:界面传值指南
- 在OC项目中添加Swift文件并实现混合编程
- swift与OC的关系
- iOS 开发 -- Swift (九) 构造函数
- IOS Apps 开发(Swift)(7)——Define Your Data Model
- IOS Apps 开发(Swift)(6)——Implement a Custom Control(2)
- The Swift Programming Language学习笔记(二十六)——高级运算符
- IOS Apps 开发(Swift)(6)——Implement a Custom Control(1)
- Swift编程之枚举类型详解
- 窥探Swift编程中的错误处理与异常抛出
- 七个Swift中的陷阱以及避免方法
- Swift - 多线程实现方式(3) - Grand Central Dispatch(GCD)
- (Swift+iOS)字符串轨迹转贝塞尔曲线,实现动态写字效果
- 窥探Swift编程之错误处理与异常抛出
- iOS 开发 -- Swift (八) 闭包
- Swift学习02
- swift 总结
- SWIFT 通过字符串创建相关的类