swift-11-init、deinit、可选链、协议、元类型

一、required

二、属性观察器

三、可失败初始化器

可以用init!定义隐式解包的可失败初始化器

可失败初始化器可以调用非可失败初始化器,非可失败初始化器调用可失败初始化器需要进行解包

如果初始化器调用一个可失败初始化器导致初始化失败 ,那么整个初始化过程都失败 ,并且之后的代码都停止执行

可以用一个非可失败初始化器重写一个可失败初始化器,但反过来是不行的

二、反初始化器( deinit

子类的deinit实现执行完毕后会调用父类的deinit

三、可选链( Optional Chaining

上面进行强制解包可以调用,但是强制解包导致crash

字典的可选

四、协议( Protocol

二、协议中的属性

三、static、 class

四、mutating

五、init

六、init init ?、 init !

七、协议的继承

八、协议组合

九、CaseIterable

十、CustomStringConvertib le

十一、字典和数组初始化

十二、Any、 AnyObject

十三、is、 as?、 as!、 as

as 百分百能转的

十四、X. self X. Type AnyClass 1.52

十五、元类型的应用2.12

因为 传进来的Animal.Type 可能是子类,cls.init()这里就调用的是子类的init(),确保调用子类的cls.init()调用成功,必须也要有init(),因此在class Animal { required init() {} } 申明 required 那么子类也就有init()

15.1 元类型的应用

十六、Self 类似oc 中的instancetype

相关推荐
蓝倾97626 分钟前
电商API接口的优势、数据采集方法及功能说明
开发语言·python·api·开放api·电商开放平台
Joker-01111 小时前
深入 Go 底层原理(十):defer 的实现与性能开销
开发语言·golang·defer
筏.k1 小时前
用 Qt 打造优雅的密码输入框:添加右侧眼睛图标切换显示
开发语言·数据库·qt
kk”1 小时前
C++ 模板初阶
开发语言·c++
时光追逐者3 小时前
C#拾遗补漏之 Dictionary 详解
开发语言·c#·.net·.net core
夏影孤灯4 小时前
C 语言问题
c语言·开发语言
新手小新8 小时前
C++游戏开发(2)
开发语言·前端·c++
你的电影很有趣8 小时前
lesson30:Python迭代三剑客:可迭代对象、迭代器与生成器深度解析
开发语言·python
染指11109 小时前
7.苹果ios逆向-目录结构
ios·ios逆向·苹果·ios目录·苹果目录
程序员编程指南10 小时前
Qt 嵌入式界面优化技术
c语言·开发语言·c++·qt