찰리의 리뷰 중 Struct 내부에 있는 Class의 데이터 타입에 대한 이야기가 있어 실험을 진행해보았습니다.
실험: Class를 가진 Struct를 복사하면, 내부의 Class 데이터 타입은 어떻게 되나요?
결과: Stack주소는 불일치, Heap은 일치하게 됩니다.
위의 출력결과를 토대로 Class를 가진 Struct를 복사하면, 내부의 Class 데이터 타입은 Reference Type으로 유지가 된다.
는 결과를 도출해보았습니다.
그렇다면 이때 number1과 number2의 Retain Count는 올라갈까요? 마찬가지로 Unit Test를 진행해보았습니다.
Node의 data가 해제될 때 deinit으로 지정된 메모리 해제 문구를 출력하도록 작성하였습니다.
실험: Struct 내부의 클래스가 연결 리스트의 노드 중 head와 tail을 비웠을 때 다른 노드는 어떻게 될까요?
결과: reference type인 노드가 연쇄적으로 해제됩니다.
head와 tail에 nil이 할당되면 자동으로 연결된 다른 노드들 또한 메모리에서 해제됩니다. 이때 노드는 next로 참조될 때 RC가 +1, 참조가 해제됨에 따라 RC가 -1이 되어 해제
됨을 추측해볼 수 있었습니다.
함께 실험을 진행해준 친절하고 짱인 Zoe와 생각할 기회를 제공해주신 멋진 찰리 감사합니다!