Skip to content

required init fatal error

LIMJISEONG edited this page May 31, 2022 · 1 revision

required init fatal error 제거

fatalError가 발생하는 코드블럭이 당장 실행될 일이 없어도, 향후 코드를 쌓다보면 fatalError가 많아질 수 있고, 그로 인해 큰 파장을 갖고올 수 있기때문에 절대 옳지않다라고 판단

그래서 이를 해결하기위해 이니셜라이저로 받는 프로퍼티를 옵셔널로 둬 required init에서 다시 초기화해야되는 상황을 막고, fatalErrorsuper.init(coder: coder) 으로 변경

class ProjectListViewController: UIViewController {
    private var viewModel: ProjectViewModelProtocol

    init(viewModel: ProjectViewModelProtocol) {
        self.viewModel = viewModel
        super.init(nibName: nil, bundle: nil)
    }

    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}
class ProjectListViewController: UIViewController {
    private var viewModel: ProjectViewModelProtocol?

    init(viewModel: ProjectViewModelProtocol) {
        self.viewModel = viewModel
        super.init(nibName: nil, bundle: nil)
    }

    required init?(coder: NSCoder) {
        super.init(coder: coder)
    }
}