# nullsafety
생성자, null
생성자 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메서드 인스턴스에 원하는 특징과 개성을 부여하기 위한 것 클래스는 반드시 생성자를 가져야하고 생성자를 통해서만 인스턴스를 만들어 낼 수 있도록 설계되었다. 기본생성자 class에서 했던 Person p1 = Person()에서 Person()이 기본생성자 이다. 클래스의 속성을 정의할때 변수의 값을 미리 할당 해놓으면 매번 인스턴스를 생성 할 때마다 똑같은 속성 값을 가진 인스턴스들이 생성된다. 그래서 클래스의 속성을 정의할 때 변수의 값을 할당 하지 않고 두었다가 인스턴스가 생성될 때 그 값을 할당하는 것이 논리적이다. 생성자 생성자 생성 null safety 클래스 내에서 생성된 변수에는 반드시 값을 할당해야한다. 그러지 않으면 에러가 뜬다. 지금 값을 할당하지 않을 것이니 넘어가줘 라고 하려면 변수 타입 뒤에 ?를 붙인다. Non nu

Null 처리로 fragment의 메모리 누수 문제 해결
현재 작은 프로젝트로 Todo_list를 만들고 있었는데 흥미로운 주제가 생겼다. 바로 뷰를 연결해주는 Fragment와 ViewBinding사이에서 Fragment의 LifeCycle의 onDestory View와 onDestory 처리에 메모리에 누수라는 문제가 있다는 것을 알게되었다. 이를 해결하기 위해 ViewBinding에 Null처리를 하는 과정에서 코틀린의 장점인 Null Safety의 중요성을 깨달게 되었고 벨로그에 기록을 하게 되었다. Fragment는 onCreateView에서 View를 생성하기 때문에 2개의 LifeCycle이 존재한다. Fragment Life: onAttach ~ onDetach Fragment View LifeCycle: onCreateView ~ onDe
TIL) 230328
Null safety를 고려해 ViewModel의 변수를 짜보자 null이 될 수 있는 경우, !! 연산자 대신에 안전 호출(?.) 연산자를 사용하는 것이 좋다. 더불어 다음과 같이 예외처리를 해두면 더 좋다. viewModel에서 업데이트하는 방식이 잘못되었을 때 채팅을 하는 화면에서 메시지를 입력해도 화면에 출력되지 않는 오류가 있었다. messageList의 값을 업데이트하는 방식이 잘못되어 있기 때문이다. messageList.value?.add(msg)는 Nullable인_messageList.value가 null이면 null을 반환한다. 이 경우에는 null이 반환될 때 아무 일도 일어나지 않게 되어 있기 때문에 새로운 메시지가 추가되지 않았던 것이다. 대신 let 함수를 사용하여 Nullable한 경우에는 아무 일도 하지 않도록 처리하도록 수정하면 다음 동영상과 같이 의
null safety와 named 옵션
flutter가 2.0 이상 버전부터 null safety를 강제했다. 따라서 기존 프로젝트들을 nullSafety방식으로 업데이트해야 했는데, 사실나는 공식문서를 읽어보지않고 유튜버 분들(코드팩토리, 개남님 등)의 방송을 보거나 간간히 nullSafety를 다룬 기술 블로그들을 보며 적용을 했었다. 몇몇 헷갈리는 것 외엔 크게 문제 없이 사용하고 있었는데 오늘 named옵션을 사용하며 내가 그동안 몰랐던 부분이 또 있었단 것을 알게되었다. flutter의 named옵션은 아래와 같이 사용하는 것을 나는 그렇게 일컫는다. nullSafety강제 이전의 방식 
[flutter] Error: using mixed null safety for legacy packages
flutter 에서 null safety 를 지원하지 않는 팩키지를 같이 사용하려하니 에러가 발생하였다. 어떻게 하면 사용할 수 있을까 인터넷을 검색하던중 아래의 내용을 입력하면 된다고 하였다. 그럼 입력을 해봅시다. Android Studio 경우, Run -> Edit Configuration Additional run args에 아래의 내용을 입력한다. --no-sound-null-safety ![](https://images.velog.io/images/killerj1/post/96160748-1941-41e9-84c1-df2274a26308/CleanShot%202021-08-28%20at%201