다트 2

다트의 인스턴스 복사

우리 앱의 식단 기록 기능을 구현하던 중, 깊은 복사의 중요성을 간만에 느끼게 되어 작성하게 되었습니다. List, Map 또는 클래스 안에 다른 인스턴스들을 넣어 사용할 때 리마인드 할 수 있다면 좋을 것 같습니다. 원본은 바꾸고 싶지 않다고 우리 앱의 식단 기록 기능은 다른 기록 기능들보다, 1회 기록 할 때의 데이터 크기가 큽니다. 또한, 사용자가 원하는 대로 그 데이터를 수정할 수도 있죠. 실제 식단 기록 과정을 예로 들면, 1회 식단 기록 안에는 다수의 음식 정보, 끼니 타입, 시간 등이 존재하고, 음식 정보 안에는 섭취 용량, 단위 정보 등이 존재합니다. 간식의 경우에는 이 식단 정보가 다수로 존재할 수도 있고, 기록 전에 사용자는 대부분의 정보를 조작할 수 있습니다. 사진이나 새로운 음식을 ..

Weekly Flutter 2023.03.15

다트의 가비지 컬렉터 어떻게 동작할까?

해당 글은 공식문서와 chatGPT의 약간의 도움을 받아 작성되었습니다. (고마워 따봉 chatGPT야) 플러터 팀에서 초기 언어를 선택할 때 12개 이상의 언어를 선택해 평가하였다고 한다. 플러터는 다트를 선택하였는데, 플러터가 다트를 선택한 주요 이유들 중 하나는 바로 다트가 lock(앱이 실행이 중지되는 상태)없이 가비지 컬렉션을 수행할 수 있다는 점이였다. 많은 언어에서 가비지 컬렉션이 메모리를 수집하는 동안 lock 상태가 된다고 한다. 하지만 다트는 항상 가비지 컬렉션을 lock 없이 수행할 수 있다는 점에서 플러터 팀의 선택을 받은 것.. 그럼 다트의 가비지 컬렉터는 어떻게 lock 없이 가비지 컬렉션이 동작을 할까? Dart의 가비지 컬렉터는 두 개의 세대(generation)로 구성된다...

Weekly Flutter 2023.03.02