Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了swift – ‘在super.init初始化self之前在方法调用中使用self’,不能通过方法调用初始化属性大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我很好奇是无论如何都要在init方法中调用一个方法来设置类的实例属性.基本上我只有一个子类UIView的类,在init中添加一些子视图,其中一些子视图是类的实例变量. class MyView: UIView { var collectionView: UICollectionView convenience init () { self.init(frame:C
我很好奇是无论如何都要在init@L_489_0@中调用一个@L_489_0@来设置类的实例属性.基本上我只有一个子类UIView的类,在init中添加一些子视图,其中一些子视图是类的实例变量.
class MyView: UIView {
    var collectionView: UICollectionView

    convenience init () {
        self.init(frame:CGRectZero)
    }

    override init (frame : CGRect) {
        super.init(frame : framE)

        addSubviews()
    }

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        addSubviews()
    }

    func addSubviews (){
        self.collectionView = UICollectionView()

    }
}

现在的问题是我在初始化类内部属性之前不能调用super init(属性’self.collectionView’在super.init调用时没有被初始化),但是我也无法调用我的自定义@L_489_0@来初始化那些变量super.init,因为它不能在初始化之前使用self.我意识到我可以使实例变量可选,但它似乎不太优雅,因为我知道它将始终被初始化(还有几个,这只是一个简化版本).有没有办法在不制作所有实例变量选项的情况下完成此操作?

编辑:

我想最终我的问题是为什么swift dis-allow在调用super.init之前调用一个@L_489_0@?有什么区别:

override init (frame : CGRect) {
    addSubviews()
    super.init(frame : framE)
}

final func addSubviews (){
    self.collectionView = UICollectionView()
}

override init (frame : CGRect) {
    self.collectionView = UICollectionView()
    super.init(frame : framE)
}
表格文件

调用super.init()之前,需要为实例变量设置值.在此操作之后,您将访问调用实例@L_489_0@.在你的情况下,你可以这样做:

override init (frame : CGRect) {
    self.collectionView = UICollectionView()
    super.init(frame : framE)
    // Now you can call method
    self@L_960_25@meMethod()
}

ADD for question’s EDIT:

由于安全原因,您无法在super.init()调用之前调用@L_489_0@.如果你这样做,那么你的@L_489_0@可以使用一些尚未在父类中初始化的属性

大佬总结

以上是大佬教程为你收集整理的swift – ‘在super.init初始化self之前在方法调用中使用self’,不能通过方法调用初始化属性全部内容,希望文章能够帮你解决swift – ‘在super.init初始化self之前在方法调用中使用self’,不能通过方法调用初始化属性所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。