Swift中的便利构造器和构造器链
import UIKit // 1.一个类中至少有一个指定构造器, 其必须负责初始化类中所有的实例存储属性
// 2.便利构造器属于次要的, 辅助性的构造器
// 3.类中可以不定义便利构造器, 便利构造器必须调用同一个类中的其他构造器完成初始化
// 4.便利构造器的语法格式 convenience init(形参) {}
// 5.只有类中才有便利构造器 // 类的构造器链
// Swift对构造器之间的调用链制定了如下3条规则:
// 1.子类构造器必须调用直接父类的指定构造器(如果有乳类)
// 2.便利构造器必须调用同一个类中的其他构造器
// 3.便利构造器调用的高早期链的最终节点必须是指定构造器 // 简化为:
// 1.指定构造器总是向上代理(调用父类构造器)
// 2.便利构造器总是横向代理(调用当前类的其他构造器) class Person { var name: String!
var weight: Double // 定义指定构造器
init(name: String, weight: Double) {
self.name = name
self.weight = weight
} // 定义便利构造器(使用convenience修饰)
convenience init(n name: String, w weight: Double) {
self.init(name: name, weight: weight)
}
} var p1 = Person(name: "Rinpe", weight: 62.0)
var p2 = Person(n: "Lili", w: 50.0)
Swift中的便利构造器和构造器链的更多相关文章
- Swift中子类必须包含的构造器和析构器
import Foundation /* Swift中子类必须包含的构造器 1.Swift允许在父类构造器前添加required关键字, 用于声明所有子类必须包含该required构造器 (如果没有声 ...
- Swift中TableViewCell便利构造器写法
目前为止比较方便的一种方法,如果有更好的写法请通知我,谢谢!
- Swift中可能失败的构造器的传播(调用)和重写
import Foundation /* 可能失败构造器的传播(调用) 1.可能失败的构造器可以调用同一个类中的普通构造器 2.普通构造器不能调用同一个类中的可能失败构造器 3.结构体中, 普通构造器 ...
- Swift中的可选链与内存管理(干货系列)
干货之前:补充一下可选链(optional chain) class A { var p: B? } class B { var p: C? } class C { func cm() -> S ...
- Swift 中枚举
Swift 中枚举高级用法及实践 字数11017 阅读479 评论0 喜欢20 title: "Swift 中枚举高级用法及实践"date: 2015-11-20tags: [AP ...
- [翻译]理解Swift中的Optional
原文出处:Understanding Optionals in Swift 苹果新的Swift编程语言带来了一些新的技巧,能使软件开发比以往更方便.更安全.然而,一个很有力的特性Optional,在你 ...
- 一览Swift中的常用关键字
要学习Swift这门语言,就必须先了解Swift的关键字及对应的解释.这里就列一下在Swift中常用到的关键字. 关键字是类似于标识符的保留字符序列,除非用重音符号(`)将其括起来,否则不能用作标识符 ...
- Swift面向对象基础(上)——Swift中的类和结构体(上)
学习来自<极客学院> import Foundation //1.定义类和结构体 /* [修饰符]calss 类名{ 零到多个构造器 零到多个属性 零到多个方法 零到多个下标 } 修饰符可 ...
- Swift面向对象基础(上)——Swift中的枚举
Swift中枚举 学习笔记来自<极客学院> import Foundation /**********1*Swift定义枚举的语法格式*************/ /* enum 枚举名 ...
随机推荐
- php empty和isset的区别
通过一个例子来解释一下, $id = 0 empty($id) 的值是true isset($id) 也是true. empty 和isset 处理对象无外乎 未定义常量 .0 .空字符串 如果变量 ...
- 11061160_11061151_Pair Project: Elevator Scheduler软件工程结对编程作业总结
软件工程结对编程作业总结 11061160 顾泽鹏 11061151 庞梦劼 一.关于结对编程 这次的软工任务既不是单打独斗的个人任务,也不是集思广益的团队项目,而是人数为两人的结对编程.两个人合 ...
- win64安装及配置apache+php+mysql
Windows是64位Win7,所以Apache.PHP和Mysql都选用的64位版本(最好是统一64位). Apache:httpd-2.4.7-win64.zip PHP:PHP-5.4.6-Wi ...
- 09 - 删除vtkDataObject中的ShouldIReleaseData() and ReleaseDataFlag 方法 VTK 6.0 迁移
VTK6 引入了许多不兼容的变.其中之一是删除vtkDataObject中所有有关管道的方法.下面列出来的就是其中的一些方法: ShouldIReleaseData() SetReleaseDataF ...
- qt编写一个只能运行单个实例的程序,不用Windows API
QtSingleApplicationhttp://code.qt.io/cgit/qt-solutions/qt-solutions.git/tree/qtsingleapplication 已打开 ...
- js 中比较 undefined
// x has not been declared before if (typeof x === 'undefined') { // evaluates to true without error ...
- 虚拟机LUN扩大后,重新分区
[root@ywcrmdb ~]# fdisk -l Disk /dev/sda: 751.6 GB, 751619276800 bytes 255 heads, 63 sectors/track, ...
- 【转】Android菜单详解——理解android中的Menu--不错
原文网址:http://www.cnblogs.com/qingblog/archive/2012/06/08/2541709.html 前言 今天看了pro android 3中menu这一章,对A ...
- Android 应用框架 —— 组件
本文内容根据个人自学整理记录,理解不当之处,希望大家批评指正,大家相互学习,写学习归纳,写博客是个好习惯,希望能够坚持下去. 在前一篇文章当中介绍了Android 的系统框架,主要是为了让大家对And ...
- 测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)
Remoting和Web Service是.net中的重要技术,都可用来实现分布式系统开发,如果是不同的平台就只能选择Web Service,但如果是同一平台,就都可以选择了.到底选择那种,当然还有访 ...