• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    해결됨

null(!!)인지 null일수도 있는건지(?) 판단할수있는 기준이 어떻게 되는지 궁금합니다

24.01.04 16:30 작성 24.01.04 16:38 수정 조회수 166

0

안녕하세요 강사님

앱강의 초반에는 멘탈도 많이 나가고 많이 헤맸는데 뒤로 갈수록 조금씩 이해가 되어가는것 같네요.. 다름이 아니라 코드를 따라 보면서 작성하다가 궁금해져서 질문을 드리는데요..

?와 !!를 사용하고 안했을때 코드에서 빨간줄이 나오고 그러는데

어떻게 판단하고 적용하시는건지 궁금합니다

 

사실.. 저걸 저때 왜 쓰는건지 그런게 이해가 잘 안되네요..ㅠ

 

아 그리고 RVAdapter를 MainActivity하고 BookmarkActivity에서 같이 사용되고 있는데 MainActivity에서는 context를 BookmarkActivity에서 context를 사용하면 왜 오류가 뜨고 this를 사용하는건지 궁금합니다..

답변 1

답변을 작성해보세요.

1

안녕하세요

!! 과 ? 의 경우에 코틀린에서 종종 헷갈리는 부분입니다.

 

? -> null일 수 있다

!! -> null이 아니다

라고 해주는 것입니다.

보통 클라이언트 앱 개발은 서버에서 받아온 데이터를 가공할텐데

서버에서 오는 데이터가 null일 수도 있고 무조건 null이 아닌 경우가 있어 이 경우를 대응해서 해주는 것입니다.

실제로 데이터가 null일 때 !!를 사용하면 앱이 꺼지는 현상이 발생하기 때문에 이 부분을 조심해서 코딩합니다.

그래서 데이터를 null이 가능하게 ?를 사용해서 코딩하는 경우가 많습니다.

이 경우 어떨 때는 ? / !! 를 쓰는 것이 좋은지에 대해서는 이럴 때 데이터가 잘 못 들어와서 예외처리를 해줘야 하는구나.. 를 경험적으로 알게되는 것이기 때문에 서버 데이터를 받아와서 가공하는 일들을 많이 해보시다 보면 자연스럽게 알게되는 부분입니다.

현재는 공부하는 단계이기 때문에 모든 데이터가 Null일 수도 있다 라고 가정하고 코딩을 해보시면 좋을 것 같습니다!

 

그리고 이 부분은 어떤 부분을 말씀해주시는 것인지 코드와 함께 설명주실 수 있으실까요?

 

아 그리고 RVAdapter를 MainActivity하고 BookmarkActivity에서 같이 사용되고 있는데 MainActivity에서는 context를 BookmarkActivity에서 context를 사용하면 왜 오류가 뜨고 this를 사용하는건지 궁금합니다..

휘리릭님의 프로필

휘리릭

질문자

2024.01.05

답변 감사합니다!

백엔드와 같이 협업할 때 소통이 어느때보다 더 필요하겠네요 

 

이번강의에서 진행된 부분인데

BookmarkActivity 코틀린파일

val rvAdapter = RVAdapter(this, contentModels)

MainActivity 코틀린 파일

val rvAdapter = RVAdapter(baseContext, items)

이렇게 사용하셨는데 this는 현재 액티비티에 contentModels 클래스 파일로 구성된 데이터를 전달한다. -> 제가 이해하고 있는게 맞는걸까요?

(baseContext는 안드로이드에서 자체적으로 내장된 클래스라는데 사실 잘 모르겠네요..)

image안녕하세요 강의 코드를 다시 보니
이렇게 this로 접근했었는데 baseContext로 영상을 찍었었나요...?
혹시 영상 몇분쯤인지 알려주시면 다시 살펴보겠습니다.

context관련해서는 배경지식이 꽤 필요한데

https://velog.io/@kajpjs0508/Android-Context%EC%99%80-Context%EC%9D%98-%EA%B5%AC%EB%B6%84-baseContext-applicationContext-this

이 글을 한번 참고해보시겠어요?

휘리릭님의 프로필

휘리릭

질문자

2024.01.12

안녕하세요 답변이 늦었는데 this가 접근이 안되서 제가 baseContext로 했었던것 같습니다ㅠ

알려주신 내용 참고해보겠습니다 감사합니다!