[swift] Class in Struct

GOSARI·2021년 12월 22일
0

swift

목록 보기
10/11

찰리의 리뷰 중 Struct 내부에 있는 Class의 데이터 타입에 대한 이야기가 있어 실험을 진행해보았습니다.


Struct 안의 Class의 데이터 타입은?

실험: Class를 가진 Struct를 복사하면, 내부의 Class 데이터 타입은 어떻게 되나요?

결과: Stack주소는 불일치, Heap은 일치하게 됩니다.

위의 출력결과를 토대로 Class를 가진 Struct를 복사하면, 내부의 Class 데이터 타입은 Reference Type으로 유지가 된다.는 결과를 도출해보았습니다.

Retain Count는 어떻게 될까?

그렇다면 이때 number1과 number2의 Retain Count는 올라갈까요? 마찬가지로 Unit Test를 진행해보았습니다.
Node의 data가 해제될 때 deinit으로 지정된 메모리 해제 문구를 출력하도록 작성하였습니다.

실험: Struct 내부의 클래스가 연결 리스트의 노드 중 head와 tail을 비웠을 때 다른 노드는 어떻게 될까요?

결과: reference type인 노드가 연쇄적으로 해제됩니다.

head와 tail에 nil이 할당되면 자동으로 연결된 다른 노드들 또한 메모리에서 해제됩니다. 이때 노드는 next로 참조될 때 RC가 +1, 참조가 해제됨에 따라 RC가 -1이 되어 해제됨을 추측해볼 수 있었습니다.


함께 실험을 진행해준 친절하고 짱인 Zoe와 생각할 기회를 제공해주신 멋진 찰리 감사합니다!

0개의 댓글