목록weak (3)
study record
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Bywl9/btrvPJ84D2B/Gq6JgY2YJmZY5Bp88ouTY1/img.png)
Retain Retain 즉 순환참조 여부를 묻는 것이다. retain : 메모리가 해제되지 않아서 낭비되는 현상을 의미 (Memory Leak) Delegate Delegate 패턴은 어떤 객체가 해야할 일을 대신 처리하도록 프로토콜을 채택하여 위임하는 것 프로토콜에서 필요한 일들을 먼저 작성한다. tableView.delegate = self 이후 프로토콜을 채택하여 위임자(동작을 대신해줄 사람)가 누구인지 알려주면 프로토콜에 정의된 여러 메소드들을 self에서 사용하겠다는 뜻이다. 1. 프로토콜 안에 특정 기능을 할 함수들을 깡통함수로 선언 2. 프로토콜을 변수로 선언 3. vc에서 프로토콜 채택 4. 프로토콜 변수에 self로 대리자 위임. 5. 관련 업무 수행하도록 구현 Delegate의 Ret..
순환 참조(retain cycle)이란? 언제 발생하는가? 어떻게 처리해야 하는가? 순환 참조란? 순환 참조는 두 가지 이상의 객체가 서로에 대한 Strong Reference(강한 참조) 상태를 가지고 있을 때 발생하며, 순환 참조가 발생하게 되면 서로에 대한 참조가 해제되지 않기 때문에 메모리에서 유지되며 이로 인해 메모리 릭이 발생하게 된다. 이러한 메모리 누수 문제를 해결하기 위해 weak, unowned reference가 사용된다. 강한 참조 참조의 기본은 강한 참조로, 별도의 식별자를 명시하지 않으면 강한 참조를 한다. ARC가 해당 인스턴스를 해제하지 않고 유지해야 하는 명분을 제공하는 것이다. 인스턴스를 다른 인스턴스의 프로퍼티, 변수, 상수 등에 할당할 때 강한 참조를 사용하면 참조 횟..
*이 글은 책 “스위프트 프로그래밍”을 읽고 작성한 글입니다. 매번 전달할 때마다 값을 복사해 전달하는 값 타입과는 다르게 참조 타입은 하나의 인스턴스가 참조를 통해 여러 곳에서 접근하기 때문에 언제 메모리에서 해제되는지가 중요한 문제이다. 인스턴스가 적절한 시점에 메모리에서 해제되지 않으면 한정적인 메모리 자원을 낭비하게 되며, 성능의 저하로 이어지게 된다. 스위프트는 프로그램의 메모리 사용을 관리하기 위해 메모리 관리 기법인 ARC를 사용한다. ARC가 관리해주는 참조 횟수 계산은 참조타입인 클래스의 인스턴스에만 적용된다. 구조체나 열거형은 값 타입이므로 참조 횟수 계산과 무관하다. 즉, 구조체나 열거형은 다른 곳에서 참조하지 않으므로 ARC로 관리할 필요가 없다. ARC란 ARC 기능은 이름에서 알..