TIL(Today I Learned)

6월 10일(목)

학습내용

  • convenience init
    • convenience init은 보조적인 init을 구현하기 위한 것이다. (객체를 간편하게 초기화하려는 목적 등..)
    • convenience init은 내부에서designated init을 호출해야한다.
    • 따라서 convenience init을 사용하려면 먼저 designated init을 구현해야한다.
  • designated init
    • designated init은 슈퍼클래스의 designated init을 호출하여 초기화하거나, 또는 모든 저장프로퍼티를 내부에서 직접 초기화하거나 해서 타입의 저장프로퍼티를 모두 초기화시키는 initializer이다.

문제점/고민한점

  • NSFetchedResultController를 extension으로 init을 추가하고 싶은데 “Initializer ‘init()’ with Objective-C selector ‘init’ conflicts with implicit initializer ‘init()’ with the same Objective-C selector”라는 오류가 나온다.

해결방법

  • objective-c는 메서드 오버로드가 불가능한데 init을 오버로드하려고 해서 오류가 나는 것이다.

참고