Cannot use instance member '_' within property initializer; property initializers run before 'self' is available 해결하기

이진욱(JIN WOOK)·2024년 12월 1일
0

Xcode에 관하여

목록 보기
2/2

에러메세지

인스턴스 멤버 이미지 뷰는 속성 생성자로 사용할수 없습니다. 속성생성자는 self가 사용가능하기전에 실행됩니다.

즉, imageView는 UIStackView의 생성자로 사용할수 없다.

self가 사용가능하기전의 뜻은?

self를 사용가능한 경우 - 인스턴스가 모두 초기화 됐을때
self 사용불가능 한경우 - 인스턴스 초기화가 덜 됐을때

이 정리를 바탕으로 생각해보면, 현재 상황은 인스턴스 초기화가 덜 됐을때에 해당한다.
stackView를 초기화 하기 위해선 imageView가 우선적으로 필요하다.
하지만 모든 속성들이 동시에 메모리에 올라가기때문에

stackView의 초기화를 진행했을때
imageView 또한 초기화가 되어 있지 않은 상황이기 때문에 imageView의 인스턴스는 사용이 불가능하다.

문제해결 - 초기화를 지연시킬수 있는 lazy 키워드

stackView는 imageView에 의존하고있다.

고로 imageView가 우선적으로 초기화가 이루어져야 stackView가 정상적으로 초기화 할수 있다.

동시에 메모리에 올리지 말고 stackView 초기화를 지연시키자.

profile
기술로부터 소외 되는 사람이 없도록 우리 모두를 위한 서비스를 만들고 싶습니다.

0개의 댓글

관련 채용 정보