ARC 시스템에서 weak 참조를 효율적이고 안전하게 관리하기 위해 도입된 구조
strong, weak, unowned 세 가지 참조 방식을 가진다.weak 참조만이 nil 값을 가질 수 있다.
객체는 생성과 동시에 자신의 Reference Counter를 가지며 ARC가 관리할 수 있게 한다.
⚠️다만 이때까지는 Side Table은 생성되지 않는다.

이제 생성된 객체를 다른 변수나 상수가 weak참조를 하면 Side Table이 생성되고 해당 객체의 weak 참조를 관리
⚠️이때, strong, unowned 참조는 여전히 객체를 직접 가리키고 weak 참조만이 Side table을 가리킨다.
Side Table은 이제부터 weak, strong, unowned 참조 횟수를 가지고 있음. 기존 객체는 pointer로 Side Table을 가리킴.
참조 횟수와 참조는 다른 느낌
nil 설정weak 참조는 참조 대상이 해제되면 자동으로 nil이 되어야 함.weak 참조를 모두 찾아 nil로 설정해 해제된 객체에 대한 접근 방지weak 참조를 가지지 않음weak 참조 카운트를 저장하는 건 비효율적이므로 weak 참조되었을 때만 weak 참조를 따로 관리weak 참조의 nil 설정이 동시에 발생 가능weak 참조를 관리 시 복잡한 동기화 필요weak참조로 할당한 변수, 상수들을 한번에 찾아 nil로 쉽게 바꾸기 위함?출처
https://alexdremov.me/dive-into-swifts-memory-management/