const 와 final
둘은 값을 한 번 지정하게 되면 바꿀 수 없다는 공통적인 속성을 가지고 있다.
하지만 다른점이 존재하는데 가장 큰 차이점은 생성 시점이라고 볼 수 있다.
const
위의 코드와 같이 인스턴스를 생성하는 코드를 만났을 때 일반적인(const가 아닌) 인스턴스화 시 무조건 새로운 인스턴스를 생성한다.
하지만 const로 선언된 변수 또는 위젯의 경우 생성을 앱이 시작될 때 메모리에 같이 등록하여 해당 생성 시점에 실질적으로 새로 생성되는것이 아닌 기존에 메모리에 올라가있던 인스턴스를 매번 재사용하게 된다.
setState 등 상태 변경에서 새로운 인스턴스를 생성하고 기존의 인스턴스는 메모리에 남게 되어 일정 시점에서 GC에 의해 지워지는데 빈번한 생성은 메모리 효율을 저하시킬 수 있다. 하지만 const를 통한 재사용 시 이러한 사용하지 않는 인스턴스가 메모리에 남게되는 메모리 낭비를 효율적으로 관리할 수 있다.
final
final도 const와 마찬가지로 처음 선언한 값을 변경할 수 없다.
하지만 다른점은 const의경우 선언부에서 무조건 값을 부여해주어야하지만 final은 선언 시 값을 부여하지 않고 이후 최초 1번 값을 부여해줄 수 있다.
그래서 선언부의 코드만으로는 컴파일러가 해당 변수의 값을 알 수 없기 때문에 const처럼 앱 실행 시 메모리에 넣어 관리할 수 없다.
'Flutter' 카테고리의 다른 글
[Flutter] 아주 간단하게 firebase google 로그인 구현 (0) | 2022.04.10 |
---|---|
[FlutterFire] 아주 쉽게 Flutter프로젝트 Firebase 설정 (with firebase CLI) (0) | 2022.04.08 |
[Flutter] GetX를 사용해야할 이유3 - 종속성 관리(의존성 주입, 바인딩) (1) | 2022.04.07 |
[Flutter] GetX를 사용해야할 이유2 - 상태관리 (0) | 2022.04.06 |
[Flutter] GetX를 사용해야할 이유1 - Route (0) | 2022.04.06 |