새싹

@IBOutlet Colletion으로 연결시 weak을 사용하지 못하는 이유

Thor_yeom 2023. 7. 23. 23:01

새싹 과제 중 

"@IBOutlet Colletion으로 연결시 weak을 사용하지 못하는 이유"에 대해 알아보는 시간이 있었다.

 

일단  @IBOutlet으로 연결시 Storage 부분에 Weak 과 Strong으로 구분되어 있는 것을 볼 수 있다.

 

 

하지만 @IBOutlet Collection으로 바꾸면 Storage 부분이 없어진것을 볼 수있다.

 

 

왜 그런것일까?

 

공식 문서에 답이 있었다.

 

이부분을 간단히 해석해보면 

 

Swift에서는 클래스 속성의 순환 참조를 약하게 할때 weak과 unowned를 제공한다.

 

즉, weak 과 unowned는 클래스를 사용할때만 사용할 수있다.

 

 

 

바로...

 

타입으로 설정되어 있는 [] 배열이 구조체이기 때문이다.

 

공식문서를 살펴보자

 

 

결론 

 

 

weak은 클래스 타입에만 사용할 수 있는데

@IBOutlet Collection은 타입이 구조체 이기 때문에

사용 할 수 없다.