새싹 과제 중
"@IBOutlet Colletion으로 연결시 weak을 사용하지 못하는 이유"에 대해 알아보는 시간이 있었다.
일단 @IBOutlet으로 연결시 Storage 부분에 Weak 과 Strong으로 구분되어 있는 것을 볼 수 있다.
하지만 @IBOutlet Collection으로 바꾸면 Storage 부분이 없어진것을 볼 수있다.
왜 그런것일까?
공식 문서에 답이 있었다.
이부분을 간단히 해석해보면
Swift에서는 클래스 속성의 순환 참조를 약하게 할때 weak과 unowned를 제공한다.
즉, weak 과 unowned는 클래스를 사용할때만 사용할 수있다.
바로...
타입으로 설정되어 있는 [] 배열이 구조체이기 때문이다.
공식문서를 살펴보자
결론
weak은 클래스 타입에만 사용할 수 있는데
@IBOutlet Collection은 타입이 구조체 이기 때문에
사용 할 수 없다.
'새싹' 카테고리의 다른 글
DispatchGroup에 대해 알아보자 part 1. (0) | 2023.08.21 |
---|---|
상황에 따른 초기화 방법 (옵셔널은 빈 값이 아니다!) (0) | 2023.08.16 |
API 호출제한 기억해두자 (0) | 2023.08.11 |
비슷하지만 다른 화면 전환의 공통점과 차이점 (0) | 2023.07.24 |
iOS UiKit Image에 shadow와 cornerRadius 적용하기 (0) | 2023.07.20 |