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 枚举名 ...
随机推荐
- 学习开发jquery插件
先学习http://www.cnblogs.com/playerlife/archive/2012/05/11/2495269.html http://www.cnblogs.com/fromeart ...
- phpcms v9中模板标签使用及联动菜单
{template "content","header"} 调用根目录下phpcms\template\content\header文件 {charset} 字 ...
- ubuntu 下telnet 操纵memcache 实现
memcache作为一款优秀的进程外缓存,常常被运用于高并发系统架构中.这里主要谈谈怎么通过telnet工具,查看memcache运行状况并对其key进行管理维护.假设memcache安装目录:/us ...
- python中列表和字典的高级应用
1.将序列分解为单独的变量 1.1问题 包含n个元素的元组或列表.字符串.文件.迭代器.生成器,将它分解为n个变量 1.2方案 直接通过赋值操作 要求:变量个数要等于元素个数 当执行分解操作时,有时需 ...
- Android json操作之取得一个对象
1:服务端返回的json数据格式如下: {"id":"1001","name":"zhangsan","sco ...
- 开源一套DirectUI界面库
http://www.cppblog.com/weiym/archive/2012/07/03/181307.html
- VS2013编译libcurl
首先从这里下载libcurl的package: http://curl.haxx.se/libcurl/ 然后解压,里面有个winbuild文件夹,这里是为windows构建工程的文件夹.里面有nma ...
- 华夏的理财30天A和华夏财富宝货币哪个收益比较好?
1.收益性比较 华夏理财30天A001057属于债券型基金,华夏财富宝货币000343属于货币型基金(活期宝,类似余额宝)收益不同 2.流动性 活期宝是可以随时取现的产品,30天A是有封闭期的产品,这 ...
- sql语句相关操作
create user test identified by test default tablespace users temporary tablespace temp quota 3M on u ...
- Java如何让异常处理机制更完备规范
1)catch的Exception一定要详细的点名是某种异常而非一概而论的用Exception ex来接收所有的异常,往往不理解这点的人也不能很好的理解catch的意义到底在哪里,是对捕获的异常进行一 ...