복붙노트

[SWIFT] '메서드 호출에 자기의 사용는 super.init 자체를 초기화하기 전에'는 메서드 호출을 통해 속성을 초기화하기 수 없습니다

SWIFT

'메서드 호출에 자기의 사용는 super.init 자체를 초기화하기 전에'는 메서드 호출을 통해 속성을 초기화하기 수 없습니다

해결법


  1. 1.문서 양식 :

    문서 양식 :

    당신이는 super.init ()를 호출 그리고이 작업 후에는 인스턴스 메소드를 호출하기 위해 액세스하기 전에 인스턴스 변수에 대한 설정 값이 필요합니다. 귀하의 경우에는이 작업을 수행 할 수 있습니다 :

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

    질문의 편집을 위해 ADD :

    당신 때문에 안전 이유는 super.init ()를 호출하기 전에 메소드를 호출 할 수 없습니다. 당신이 그것을 할 경우 다음 방법은 아직 부모 클래스에서 초기화되지 않은 일부 속성을 사용할 수 있습니다

  2. from https://stackoverflow.com/questions/33765485/use-of-self-in-method-call-before-super-init-initializes-self-cant-init-prop by cc-by-sa and MIT license