Delegate
- 대리자
- 어떤 객체가 해야 할 일을 부분적으로 확장해 대신 처리해주는 역할을 합니다.
- 객체의 행동을 단순화하면서, 객체 간의 결합성을 최소화시키는데 장점이 있습니다.
- 메세지를 수신받는 객체가 많을 시 Notification을 사용하고, 하나의 객체가 여러 가지 요구를 받는다면 Delegate를 사용합니다.
Retain
- 메모리가 해제되지 않아서 낭비되는 현상을 의미합니다.
- 두 클래스 인스턴스가 서로 강한 참조를 하게되면 Retain Cycle이 발생합니다.
문제에 대한 답?
- Delegate는 객체 간의 작업이기 때문에 참조 값을 사용합니다.
- 참조값을 주고받기 때문에 retain 현상이 일어납니다.
해결 방법
- Weak 선언 (약한 참조)하면, 강한 참조가 되지 않아 객체의 메모리가 해제되면 자동으로 nil이 됩니다.
- Unowned (약한 참조) 선언하면, 해제된 메모리 영역에 재접근하지 않는다는 확신이 있을 때 사용합니다.
내용 출처
https://github.com/iOS-SOPT-iNNovation/iOS_Traning/issues/14
'iOS > iOS' 카테고리의 다른 글
Swift와 Objective-C (0) | 2022.05.24 |
---|---|
Swift란 무엇인가? (0) | 2022.05.23 |
RxSwift란? (0) | 2022.04.30 |
Instance 메서드와 class 메서드의 차이점을 설명하시오. (0) | 2022.04.20 |
UIView 에서 Layer 객체는 무엇이고 어떤 역할을 담당하는지 설명하시오. (0) | 2022.04.18 |
댓글