TIL 230823 선발대 수업3

장재용·2023년 8월 23일

TIL

목록 보기
23/32

lateinit var vs val ~~ by lazy

뷰바인딩을 할때 두 가지가 있다
var로 선언할지 val로 선언할지..
1. var

private lateinit var binding: MainActivityBinding
.
.
.
binding = MainActivityBinding.inflate(layoutInflater)
  1. val
private val binding: MainActivityBinding by lazy{
	MainActivityBinding.inflate(layoutInflater)
}

둘 중 뭘 선택할지는 개인의 취향이다.
튜터님과 구글의 추천은 1번이라고 한다.

binding vs _binding

프래그먼트에서 뷰바인딩을 사용할때 메모리 누수가 날 수 있다.
왜냐하면 프래그먼트는 화면에서 사라졌을지라도 메모리 어딘가에 살아있을 수 있기 때문
그래서 _binding을 사용해서 onDestryView()때 _binding = null로 바인딩을 끊어줘야한다.

_binding : 변경이 될 수 있는값은 var인 _binding을 사용하고
실제로 개발자가 사용하는 코드는 val인 binding을 사용한다.

private var _binding: ResultPrifileBinding? = null
private val binding get() : _binding!!

_binding = ResultPrifileBinding.inflate(inflater, container, false)
val view = binding.root

현업에서는 확장성을 고려해서 개발한다.

처음 개발시에는 요소가 이정도면 충분하겠지 하고 만들었는데
추후에 요소가 추가되는 경우가 빈번하다.
그래서 현업에서는 처음부터 확장성을 고려해서 만든다.
고로 처음 설계시 data class를 주로 사용한다.(확장 용이)

팩토리 패턴

디자인패턴의 일부
클래스에서 어떤 객체를 만들지를 외부에서 알려주는 패턴이다.

newIntent newInstance

profile
enjoy_error_message!

0개의 댓글