Software_Platform/Android

Android weak pointer, strong pointer (wp, sp) & RefBase

Roien 2018. 3. 18.
반응형
WeakPointer와 StrongPointer는 SmartPointer라고 함
SmartPointer의 사용 목적은 객체의 소멸을 자동으로 처리하기 위함
특히 Android의 sp, wp는 한개의 실체 객체에 대한 여러 reference가 존재할 시 객체의 소멸 시점을 정확히 알아서 결정할 수 있도록 처리하기 위함

1. RefBase는 
StrongPointer 및 WeakPointer가 동작하는데 필요한 기본 '공통 로직'을 갖는 class
sp, wp를 사용하려면 모든 객체는 반드시 RefBase를 상속받아야 함

2. WeakPointer
weak는 weak만 ++/-- 하며 객체의 life cycle을 관리

3. StrongPointer
strong은 strong것 ++/--, weak 것 ++/--를 수행
    이때, weak가 0가 되어도 실제 객체는 소거 되지 않음
    반대로 strong이 0이 되면 weak가 여러개 있어도 객체는 소거됨

4. weak는 Refbase 객체 member 접근이 불가능
    StrnogPointer는 operator->를 overriding 하여 RefBase 객체 ptr 제공
    WeakPointer는   operator->가 재정의 되어 있지 않음

5. weak가 member 변수에 access하려면 ?
     WeakPointer의 promote  <-- 여기서 StrongPointer를 생성(& inc)하여 return


반응형

댓글