내가 다음과 같은 것을하고 싶다고 상상해보십시오. 몇 가지 속성이있는 UIView의 사용자 지정 하위 클래스가 있습니다. 다른 이전 속성에서 초기화하려는 속성 중 하나입니다.Swift에서 하나의 기본 속성 값을 다른 값으로 전달
이 코드는 오류를 나타냅니다 : 'MyView.Type' does not have a member named 'driver'
. 따라서이 문제를 해결하려는 확실한 시도는 초기화 프로그램에서 기본값을 정의하는 것입니다. ONE 이니셜 라이저 만 있다면 괜찮습니다. 그러나 우리가 몇 개 있다면 어떨까요?
class MyView :UIView {
var driver = HumanDriver()
var car
var plane
var train
var spaceship
override init() {
setupMyView()
super.init()
}
required init(coder aDecoder: NSCoder) {
setupMyView()
super.init(coder:aDecoder)
}
override init(frame: CGRect) {
setupMyView()
super.init(frame: frame)
}
func setupMyView() {
car = Car(driver: driver)
plane = Plane(driver: driver)
train = Train(driver: driver)
spaceship = Spaceship(driver: driver)
}
}
을하지만이 또한 오류로이 시간을 초래한다 : 잘 나는 아래, 하나의 설정 기능에 공통 코드를 수집하기 위해 시도 할 수 'self' used before super.init call
을. 이것은 init이 호출되기 전에 self를 사용하기 때문에 이해할 수 있습니다.
거기에 좋은 해결책이 있습니까? 분명히 나는 암시 적으로 래핑 된 옵션을 사용할 수 있었지만, 더 좋은 방법이 있어야하는 것처럼 보였다.
?? 또한 코더 ?? –