Swift 5

[Swift] 메모리를 참조하는 방법(strong, weak, unowned)

강한 참조 (Strong Reference) 해당 인스턴스의 소유권을 가진다. 자신이 참조하는 인스턴스의 retain count를 증가시킨다. 값 지정 시점에 retain이 되고 참조가 종료되는 시점에 release가 된다. 선언할 때 아무것도 적어주지 않으면 default로 strong이 된다.var test = Test() // retain count 1 증가 test = nil // retain count가 1 감소되어 0이 되면서 메모리 해제됨 약한 참조 (Weak reference) 해당 인스턴스의 소유권을 가지지 않고, 주소값만을 가지고 있는 포인터 개념이다. 자신이 참조하는 인스턴스의 retain count를 증가시키지 않는다. release도 발생시키지 않는다. 자신이 참조는 하지만 wea..

Swift/etc 2021.03.10

[Swift] ARC란?

출처 value type과 달리 reference type은 하나의 인스턴스가 참조를 통해 여러곳에서 접근하기 때문에 언제 메모리에서 해제 되는지가 중요하다. 인스턴스가 적절한 시점에 메모리에서 해제되지 않으면 한정적인 메모리 자원을 낭비하게 되고, 이는 성능저하로 이어진다 Swift는 메모리 사용을 관리하기 위해 메모리 관리 기법인 ARC를 사용한다. ARC(automatic reference counting) 자동으로 메모리를 관리해주는 방식. 더이상 필요하지 않은 클래스의 인스턴스를 메모리에서 해제하는 방식으로 동작한다. 인스턴스가 언제 메모리에서 해제되어야 할지를 컴파일과 동시에 결정함 ARC의 장단점 장점 컴파일 당시 이미 인스턴스의 해제 시점이 정해져 있어서 인스턴스가 언제 메모리에서 해제될지..

Swift/etc 2021.03.08

[MVVM] MVVM패턴이란?

MVVM이란? MVVM은 Model - View - ViewModel의 약자로 소프트웨어 아키텍처 패턴입니다. (Model은 데이터, View는 유저 인터페이스, ViewModel은 뷰와 모델 사이를 연결) Model(모델)은 어떤 부분을 책임지고 있나요? 데이터 모델, 데이터 접근 레이어, 비즈니스 로직등이 포함되어 있습니다. 모델은 데이터를 얻거나 저장하거나 지우거나 업데이트에 대해 알고 있습니다. 이 작업들은 뷰모델에 의해 시작되며 모델이 데이터에 대한 작업을 마치면 뷰 모델에게 결과를 알립니다. 모델은 뷰모델이 소유하고 있고, 뷰나 뷰모델이 모델에 대해 들여다볼 수 없습니다. View(뷰)는 어떤 부분을 책임지고 있나요? 사용자 이벤트를 수신하고 데이터를 표시하는 유저 인터페이스를 책임집니다. (..

Swift/MVVM 2021.03.04