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을 오버로드하려고 해서 오류가 나는 것이다.
참고