목록순환참조 (2)
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가 해당 인스턴스를 해제하지 않고 유지해야 하는 명분을 제공하는 것이다. 인스턴스를 다른 인스턴스의 프로퍼티, 변수, 상수 등에 할당할 때 강한 참조를 사용하면 참조 횟..