首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Swift变量初始化

Swift变量初始化
EN

Stack Overflow用户
提问于 2016-11-07 15:43:49
回答 3查看 16.8K关注 0票数 9

我有一个关于swift中变量初始化的问题。

我有两种方法来初始化一个变量(在Objective-C中作为类的“属性”)。

他们中哪一个是最正确的?

代码语言:javascript
复制
class Class {

  var label: UILabel!

  init() { ... label = UILabel() ... }

}

代码语言:javascript
复制
class Class {

  var label = UILabel()

  init() { … }

}
EN

Stack Overflow用户

回答已采纳

发布于 2016-11-07 16:10:56

实际上,你有5种初始化属性的方法。

没有正确的方法,方法取决于需要。

基本上声明像UILabel这样的对象总是-如果可能的话-作为常量(let)。

这5种方式是:

声明行中的

  • Initialization

让label = UILabel(frame:...

  • Initialization在init方法中,您不必将该属性声明为隐式取消包装可选。

让标签: UILabel init() { ...label = UILabel(frame: ... ) ... }

前两种方法实际上是相同的。

  • Initialization在像viewDidLoad这样的方法中,在这种情况下,您必须将属性声明为(隐式取消包装) optional,也声明为var

var标签: UILabel!在viewDidLoad()上...}

  • Initialization = UILabel(frame:...)使用闭包分配默认(计算)值。当类被初始化时,闭包被调用一次,并且不可能在闭包中使用类的其他属性。

let标签: UILabel ={ lbl = UILabel(frame:...)lbl.text = "Foo“return lbl }()使用闭包进行

  • 延迟初始化。当第一次访问该属性时,闭包被调用(一次),您可以使用该类的其他属性。

该属性必须声明为var

让labelText = "Bar“惰性变量标签: UILabel ={ lbl = UILabel(frame:...)lbl.text = "Foo“+ self.labelText return lbl }()

票数 36
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40460118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档