gpt4 book ai didi

ios - Swift 2 中的初始化属性

转载 作者:行者123 更新时间:2023-12-01 18:47:47 24 4
gpt4 key购买 nike

我正在尝试构建一个自定义 UIView 并且在初始化过程中迷失了方向。

代码一

class CustomUIView: UIView {
var propertyToInitialize: CGRect

//Custom Initializer
override init(frame: CGRect) {
self.propertyToInitialize = CGRect(x: 0, y: 0, width: (superview?.frame.size.width)!, height: (superview?.frame.size.height)!)
super.init(frame: frame)
}
}

当我使用上面的代码时,XCode 给我的错误如下。

错误
Use of 'self' property access 'superview' before super.init initializes self

所以我修改了我的代码

代码二
class CustomUIView: UIView {
var propertyToInitialize: CGRect

//Custom Initializer
override init(frame: CGRect) {
self.propertyToInitialize = CGRect()
super.init(frame: frame)
self.propertyToInitialize = CGRect(x: 0, y: 0, width: (superview?.frame.size.width)!, height: (superview?.frame.size.height)!)
}
}

问题

这是糟糕的设计吗?我应该采取不同的方法吗?因此,我是否使用更多内存来初始化属性两次?

最佳答案

整个事情都是糟糕的设计。制作 propertyToInitialize一个可选的包装 CGRect,因此它在初始化时不需要值,并将您的代码移动到您的 View 的 didMoveToSuperview ,这是 super View 的概念具有任何意义的第一个时刻。更好的是,根本不要把它变成一个属性;可以在您需要此信息的任何时候检查 super View ,因此在属性中复制它是没有意义的。

关于ios - Swift 2 中的初始化属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33615517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com