-
[TiL]2023년 5월 3일TiD 2023. 5. 3. 01:46
#Kotlin inner, nested Class (RecyclerView 에서 Adapter와 ViewHolder)
리사이클러뷰 adapter를 사용하려다가 과거에는 viewholder를 항상 어뎁터의 inner 클래스로 작성했었는데 코드리뷰에서 항상 inner로 사용하지 말라는 조언을 듣기도 했고 메모리누수가 발생한다는 사실을 알고 있었지만 제대로 알지 못 했고 항상 그냥 inner 클래스로 사용했기에 알아봤다.
(자바는 기본적으로 inner 코틀린은 nested다.)
어떤 클래스의 inner클래스를 작성하고 사용하게 되면 항상 묵시적으로 외부 클래스의 변수들을 참조하게 된다.
(그래서 생성자에 없어도 그냥 사용할 수 있다.)
그렇게 되면 사용하지 않는 데이터들도 드러나지 않게 계속 갖고있기 때문에 불필요한 메모리공간을 차지하게 된다.
그러므로 nested클래스 사용을 기본으로 하고 꼭 필요한 경우에만 inner클래스를 사용해야한다.내 생각엔 nested 클래스로 작성하면 거의 두 클래스의 관계성만 강조하는 역할이고 큰 기능은 없는듯
참조 : https://velog.io/@huijiny/Kotlin-Inner-Nested-classes
'TiD' 카테고리의 다른 글
TID(Today I DId)로 전환 (0) 2024.03.24 [TiL]2023년11월02일 (0) 2023.11.02 [TiL]2023년3월20일 (0) 2023.03.20 [TIL]2023년3월15일 (0) 2023.03.15 [TIL]2023년3월6일 (0) 2023.03.06