나는 CS193 수업을 듣고 있습니다. video의 정확한 순간부터.인스턴스화 중에 속성 (저장 및 계산)에 액세스하는 방법은 무엇입니까?
옵션 1 :
class FaceView: UIView
{
var scale: CGFloat = 0.90
var mouthCurvature: Double = 1.0
private var skullRadius: CGFloat {
return min(bounds.size.width, bounds.size.height)/2 * scale
}
}
이유는 쓸 수 없습니다
옵션 2 : 교수는 가고 '당신이 할 수있는 초기화하는 동안 당신을 설명
class FaceView: UIView
{
var scale: CGFloat = 0.90
var mouthCurvature: Double = 1.0
private var skullRadius = min(bounds.size.width, bounds.size.height)/2 * scale
}
자신의 재산에 접근하지 마십시오. 따라서 옵션 2를 사용하면 다음과 같은 오류 메시지가 나타납니다 : instance member 'bounds' cannot be used on type 'FaceView'
.
그래도 옵션 1의 인스턴스 멤버 인 'bounds'에 액세스 할 수 있습니까? 차이점이 뭐야? 아니면 액세스가 괜찮은가요?하지만 초기화 중에 하나의 속성을 다른 속성에 종속시키지 못하나요?
의 차이입니다. 옵션 2에서면 뷰는 아직 인스턴스화되지 않았으므로 경계가 없습니다 – Jared
내 질문을 전달할 수 없었던 것 같습니다. 이미 알고 있습니다 ... 옵션 1에서 인스턴스화 된 것으로 간주되는 방법은 무엇입니까? 우리는 무엇을 다르게하고 있습니까? 간단히'return'하고 이슈를 풀어도 나에게 알려지지 않는다 ... – Honey
'scale'과'mouthCurvature'는'FaceView'의 인스턴스가 초기화 될 때 초기화됩니다. 계산 된 속성 인'skullRadius'는 인스턴스화 된 객체가 인스턴스화 된 후에 그 속성이 요구 될 때 계산됩니다. 'skullRadius'가 일반적인 속성 인 다른 경우에는 인스턴스화시 설정되어 있으므로 다른 멤버는 아직 사용할 수 없습니다. – ColGraff