我应该选择期权还是隐式解包期权

时间:2014-11-28 19:52:55

标签: ios swift optional

假设您需要编写将闭包作为参数之一的函数来将其称为回调。该函数的用户应该能够通过nil而不是关闭。在这种情况下,你会使用期权还是隐式解包的期权?

提前致谢。

2 个答案:

答案 0 :(得分:5)

作为Nate答案的补充(这是imo 解决方案),我的建议是永远使用隐式解包的选项,除非你有充分的理由。延迟初始化是一个很好的理由。

  • 如果您不确定,请不要使用

  • 如果在初始化后的生命周期中可选项为nil,请不要使用

  • 如果您想避免输入额外的?,请不要使用

  • 如果第三方函数,方法或闭包传递了一个可选项,请不要将其转换为隐式解包

  • 如果第三方函数,方法或闭包提供了一个隐式展开的...自己判断是否明确检查不是nil(即是否相信该可选将永远不是nil)

    < / LI>
  • 更一般地说,如果您对隐式展开的方式有疑问,总是避免

  • 总是更好

答案 1 :(得分:3)

在这里肯定使用一个可选项,因为期望它可能是nil。当使用隐式展开的选项时,目的是在它们被使用时它们永远不会是nil - 典型的例子是@IBOutlet属性,它们不能在初始化程序中创建但是会在viewDidLoad中使用之前,通过故事板创建。