남의 코드를 보다 보니, 

convenience init 이라는 키워드가 나와서, 알아보기로 했다.

 

    public init(grid: Grid = Grid(), sections: [Section] = []) {
        self.grid = grid
        self.sections = sections
        
        super.init()
    }
    
    public convenience init(grid: Grid = Grid(), _ sections: [[ViewModelProtocol]]) {
        let sections = sections.map { items in
            return Section(grid: grid, header: nil, footer: nil, items: items)
        }
        self.init(grid: grid, sections: sections)  ## convenience init 함수에는 이렇게, 다른 init함수를 호출해줘야 한다.
    }

따로, 예제가 없어서, 현재 내가 보고 있는 코드를 예제로 쓴다.

저자가 마음대로 막 가져다 쓰라고 했으니... 

 

convenience init은 init함수와 똑같은데, 파라미터 중 일부를 기본값으로 가져올 수 있다.

그리고, 약간 보조적인 성경의 init이다 보니, 꼭 다른 init을 호출해줘야 한다는 규칙이 있다.

 

+ Recent posts