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

相关推荐
追风赶月、5 分钟前
【QT】认识QT
开发语言·qt
大熊猫侯佩10 分钟前
SwiftData 共享数据库在 App 中的改变无法被 Widgets 感知的原因和解决
swiftui·swift·apple
大熊猫侯佩12 分钟前
使用令牌(Token)进一步优化 SwiftData 2.0 中历史记录追踪(History Trace)的使用
数据库·swift·apple
大熊猫侯佩14 分钟前
SwiftUI 在 iOS 18 中的 ForEach 点击手势逻辑发生改变的解决
swiftui·swift·apple
秋田君42 分钟前
深入理解JavaScript设计模式之闭包与高阶函数
开发语言·javascript·设计模式
Daniel_Coder1 小时前
Xcode 16.4 + iOS 18 系统运行时崩溃:___cxa_current_primary_exception 符号丢失的原因与解决方案
ios·xcode·ios 18·dyld·libc++abi
蜘蛛侠..1 小时前
Java中的阻塞队列
java·开发语言·优先级队列·阻塞队列·无界队列·有界队列·数组结构
byte轻骑兵1 小时前
【C++高级主题】命令空间(五):类、命名空间和作用域
开发语言·c++
Jay_272 小时前
python项目如何创建docker环境
开发语言·python·docker
xlsw_2 小时前
MyBatis之测试添加功能
java·开发语言·mybatis