假设您需要编写将闭包作为参数之一的函数来将其称为回调。该函数的用户应该能够通过nil
而不是关闭。在这种情况下,你会使用期权还是隐式解包的期权?
提前致谢。
答案 0 :(得分:5)
作为Nate答案的补充(这是imo 解决方案),我的建议是永远使用隐式解包的选项,除非你有充分的理由。延迟初始化是一个很好的理由。
如果您不确定,请不要使用
如果在初始化后的生命周期中可选项为nil,请不要使用
如果您想避免输入额外的?
,请不要使用
如果第三方函数,方法或闭包传递了一个可选项,请不要将其转换为隐式解包
如果第三方函数,方法或闭包提供了一个隐式展开的...自己判断是否明确检查不是nil(即是否相信该可选将永远不是nil)
< / LI>更一般地说,如果您对隐式展开的方式有疑问,总是避免
答案 1 :(得分:3)
在这里肯定使用一个可选项,因为期望它可能是nil
。当使用隐式展开的选项时,目的是在它们被使用时它们永远不会是nil
- 典型的例子是@IBOutlet
属性,它们不能在初始化程序中创建但是会在viewDidLoad
中使用之前,通过故事板创建。