参见英文答案 >
Calling instance method during initialization in Swift7个
我上课了
我上课了
class ChartView: UIView { class: DotView { let circleView1: UIView let circleView2: UIView init (view: UIView) { self.view = view self.circleView1 = self.buildCircle(some rect here) self.circleView2 = self.buildCircle(some rect here) func buildCircle(rect: CGRect) -> UIView { let dotView = UIView(frame: rect) dotView.backgroundColor = UIColor.whiteColor() dotView.layer.cornerRadius = dotView.bounds.width / 2 self.view.addSubview(dotView) return dotView } } }
但我得到了这个错误:
在初始化所有存储的属性之前,在方法调用’buildCircle’中使用’self’
所以我只想在某个方法中创建对象,然后将其分配给存储的属性.我该如何修复我的代码?
解决方法
在初始化所有非可选实例变量之前,您无法在self上调用方法.
有几种方法可以解决这个问题.
有几种方法可以解决这个问题.
>将属性更改为选项或隐式解包选项(不建议)>使buildCircle()方法静态或只是一个在文件中运行并为所有圆圈调用addSubview()在所有属性初始化并且您调用之后super.init()等等.你必须避免在自己之前打电话给自己class已初始化.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。