Optional&访问权限

217 阅读1分钟

Optional

查看sil发现Optional的本质是一个enum,里面有none和some这两个case

解包
  • 强制解包 遇到值为nil时强制解包会崩溃,不建议使用
  • if let 可选项绑定
  • guard let 当条件为false时才会进入到guard,并且,temp在guard的作用域外也可以调用

实际开发时尽量使用if let 和 guard let

Equatable

通过遵循Equatable协议来判断两者之间是否相等 直接有了==运算符,在swift中好多都默认遵守了Equatable协议 上图中自定义了一个结构体,但并没有遵守Equatable所以使用不了==运算符

  • 结构体遵守Equatable 遵守Equatable后可以
  • 类遵守Equatable 需要自己手动实现Equatable的协议方法

关键字

  • private 仅在当前作用域内有效,通常用作写单例时不向外部提供初始化方法
  • fileprivate 仅在当前定义的源文件中能访问到
  • Internal 默认访问级别。允许模块中的任意文件访问(模块外不支持访问) (import的都是模块)
  • public 开放式访问,允许任何模块的任何文件访问,但只支持定义模块内继承和子类重写
  • open 开放式访问,最不受限制,允许任何模块的任何文件访问、继承和子类重写