大佬教程收集整理的这篇文章主要介绍了在Swift中初始化的位置?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
class ViewController: UIViewController { let myView: UIView = UIView() override func viewDidLoad() { super.viewDidLoad() myView.frame = getFrame() myView.backgroundColor = UIColor.redColor() self.view.addSubview(myView) } func getFrame() -> CGRect { return CGRectMake(0,100,100) } }
在Objective C中我会在我的函数中完成初始化.
但是如果我想调用一个没有设置参数的初始化器怎么办?
例如
我想用一个在func()中计算的帧初始化
class ViewController: UIViewController { //THIS IS NOT WOKRING let myView: UIView = UIView(frame: getFrame()) override func viewDidLoad() { super.viewDidLoad() myView.backgroundColor = UIColor.redColor() self.view.addSubview(myView) } func getFrame() -> CGRect { return CGRectMake(0,100) } }
我不想在代码中的两个不同位置进行初始化.初始化是否有任何一般模式?
let myView: UIView = UIView(frame: CGRectMake(0,100))
因为这不需要引用自我.或者你可以懒惰实例化,它将在self可用后运行(这只能用于var not let:
lazy var myView: UIView = { return UIView(frame:self.getFrame()) }()
要回答你的问题,当你使用UIKit类时,你通常无法控制它们的实例化,你可以继续这样做,就像你在目标c中一样,并使用implicitly unwrapped选项(以防止你必须使用!或?每一个实例化变量的时间,例如:
var myView: UIView! override func viewDidLoad(){ super.viewDidLoad(); myView = UIView(frame:getFrame()) }
然而,这不适用于let常量,因为它们需要立即分配或在对象的构造函数中分配.希望这可以帮助.
以上是大佬教程为你收集整理的在Swift中初始化的位置?全部内容,希望文章能够帮你解决在Swift中初始化的位置?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。