Swift 编程:隐式解包可选类型与初始化器深度解析
1. 隐式解包可选类型(Implicitly Unwrapped Optionals)
隐式解包可选类型(IUOs)在 Swift 中是一种特殊的可选类型,可通过类型后面的感叹号(!)来识别,例如 String! 。可以将其视为预先解包的可选类型。不过,和强制解包一样,感叹号在 Swift 中是一个危险信号,因为 IUOs 可能会导致应用程序崩溃。
1.1 实际应用中的 IUOs
IUOs 就像一把电钻,不常用但在需要时很有用。创建 IUO 时,需承诺变量或常量在初始化后、使用前会被赋值。若此承诺未兑现,应用程序可能会崩溃。
以一个后端聊天服务为例,后端服务器启动时,会先启动一个进程监视器(ProcessMonitor),确保系统准备好后再初始化和启动其他服务,即聊天服务器(ChatService)需在进程监视器之后启动。进程监视器启动后,聊天服务器会被传递给它。
进程监视器可以有一个对聊天服务的可选引用,这样聊天服务可以稍后再传递给进程监视器。但将聊天服务器设为进程监视器的可选属性会很麻烦,因为每次访问聊天服务器时都需要解包,而实际上进程监视器有有效的引用。也可以将聊天服务设为进程监视器的懒属性,但这样进程监视器就需要负责初始化聊天服务,而它可能不想处理聊天服务的依赖关系。
这种情况下,IUO 是个不错的选择。将聊天服务设为 IUO,既不需要在进程监视器的初始化器中传递聊天服务,也不需要将其设为可选类型。
1.2 创建 IUO
以下是 ChatService
超级会员免费看
订阅专栏 解锁全文
821

被折叠的 条评论
为什么被折叠?



