-
[Swift] struct 는 왜 메모리릭 걱정을 안해도 되는걸까?Swift 2023. 1. 26. 13:58
코드를 치다 문득 내가 왜 class 에서만 weak self 를 해주고 있지?
일종의 게슈탈트 붕괴를 겪게 되었다.
그래서 다시 공부해보자 ~!
우선 1차적으로 class 와 struct 이 저장되는 메모리 영역이 다르다
struct -> Stack 혹은 Heap
class -> Heap
에 저장됩니다.
경우에 따라 struct 또한 Heap 에 저장됩니다.
Heap 에 저장될 경우 관리 대상이 됩니다.
바로 ARC 이죠. 기본적으로 class 는 참조 타입이기에 만약 더 이상 참조하고 있지 않은 인스턴스라면 메모리에서 내려주어야 합니다.
그것을 자동으로 해주는 것이 ARC 라는 시스템이죠.
만약 struct 의 인스턴스가 class 인스턴스의 property 로 존재할 경우 Heap에 저장될 것입니다.
이러한 경우를 제외한다면 struct 인스턴스는 기본적으로는 stack 에 저장될 것이고 만들어서 쓰고 바로바로 버리게 됩니다.
다시 정리 ->
참조값이 아니기 때문에 카운트를 하지 않고 복사해서 만들었다가 한번쓰고 바로 메모리에서 내려버리는 것입니다.
그렇기 때문에 메모리릭을 걱정할일이 없는 것이죠.
왜냐? 어차피 바로바로 사라질 메모리이기 때문입니다.
'Swift' 카테고리의 다른 글
[Xcode] Scheme 이름 가지고 오기 (0) 2023.03.06 [Swift] 왜 struct 는 deinit 을 지원하지 않는 것일까? (2) 2023.02.04 [Swift] CodingKeys 작성, 이제 제발 그만하자 - JSONDecoder, keyDecodingStrategy (0) 2023.01.15 [Combine] 시간차를 두고 값을 내보내주자 - debounce (0) 2023.01.14 [Combine] Publishers 를 합쳐서 한번에 처리해주자 - combineLatest (4) 2023.01.13