관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] @available(*, unavailable) 사용하여 비가용성 정의 본문

iOS 응용 (swift)

[iOS - swift] @available(*, unavailable) 사용하여 비가용성 정의

jake-kim 2021. 7. 13. 22:59

비가용성 정의

  • xib를 사용하지 않고 code로만 진행하는 경우, 보통 required init?(coder:)는 fatalError 발생하도록 설정
    • runtime error를 발생시키는 코드
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
  • @available(*, unavailable)을 설정
    • Compile time에 error를 발생시키는 코드이므로 더욱 좋은 코드
    @available(*, unavailable)
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

ex) custom button에서 xib를 사용하지 않고 code만 사용하여 구현되도록 정의

class CustomButton: UIButton {
    override init(frame: CGRect) {
        super.init(frame: frame)
    }

    @available(*, unavailable)
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}
  • @available(*, unavailable)에 접근할때 컴파일 에러 발생
    • 'init(coder:)' is unavailable

 

Comments