230519 Today I Learned


lazy var의 사용

프로젝트를 진행중에 Model 중 struct로 만든 한 객체 A를 ViewController 전역 변수로 만들어 초기화를 시켜줬었습니다.

이 객체 A 내부에 functionA라는 메서드가 있는데 그 메서드도 ViewController의 전역 변수로 만들어 인스턴스화를 했습니다.

객체 A와 메서드 function를 ViewController의 전역 변수를 사용하여 만든 이유는 여러 곳에서 A의 functionA를 사용하기 때문입니다.

lazy var를 사용하지 않을 경우 다음과 같이 오류가 발생합니다.

스크린샷 2023-05-19 오전 6.41.20.png

그 이유는 시점의 문제입니다.

MyClass가 인스턴스화 되는 순간 프로퍼티 a와 aFunction도 함께 초기화가 되는데 aFunction에서는 미리 a를 받아 사용해야 하기 때문에 문제가 됩니다.

그렇다면 어떻게 해야할까 고민을 해본 결과 lazy var로 초기화를 미루면 되겠다 라고 생각했습니다.

스크린샷 2023-05-19 오전 6.45.08.png

그렇게 만들자 오류도 사라지고 제대로 동작도 했습니다.