2022-07-04

swift 学习小计

mutating
1. 实例方法内部修改自身属性(struct、enum)class不需要加
2. Protocol中,用mutating标记的实例方法,才允许在结构体、枚举的具体实现中修改自身内存(属性)。如果是class遵循协议,则不需要标记。

required
1.子类修改父类的指定初始化器需要标记required,不需要标记override
2. 协议中定义初始化器,如果是final修饰的class遵序协议,实现时则不需要添加required。如果不是final修饰,则必须添加required。
3. 协议中定义的初始化器,如果正好重写了父类的指定初始化器,则必须添加required override

typealias
1.协议组合(可以最多包含一个class类型)
同时遵循Livable协议、Runnable协议且是Person或者其子类的实例
typealias RealPerson = Person(类类型) & Livable(协议) & Runnable(协议)

CaseIterabel
实现遍历枚举值的协议

enum Season:CaseIterabel{
  case spring,summer,autumn,winter
}

let seasons = Season.allCases  //数组 4个
for season in seasons{
    pritn(season) //  spring summer autumn winter
} 

Any
代表任何类型(枚举、结构体、类 包括函数类型)

AnyObject
可以代表任何类类型(协议后面写上class 也可以代表这个协议只有类能遵循 现在已废弃)

is
判断是否是某种类型

as? as! as
强制类型转换

Self
1. 代表当前类
2. 作为返回值使用,限定返回值必须和方法调用者是同一类型
prefix
重载运算符中 代表 前置运算符

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容