왜 @Binding 변수에 @State 변수로는 $를 붙여 넘겨줄까?

한번 예를 들어볼께요🙋🏻 우리가 SwiftUI로 어떤 화면을 구현하려 합니다. PlayView라는 상위뷰가 존재하고 이 내부에는 플레이의 on/off 값을 가진 @State 변수로 isPlaying이 존재합니다. 자 그다음으로 PlayButtonView이라는 하위뷰가 존재하고 이 내부에는 isPlaying과 마찬가지로 @Binding 변수로 isPlaying가 존재한다고 가정해볼께요. 그랬을때 우리는 PlayView 내부에 PlayButtonView를 호출할때 @Binding 변수인 isPlaying에 @State 변수인 isPlaying을 넣어주려합니다. 이때 @State는 바인딩 타입이 아님으로 그냥은 넣어줄 수 없고 $를 붙여서 넣어주게 되는데요😲 여기서 $를 왜 붙이게 되었을까요? 그 이유는 PropertyWrapper에 구현된 projectedValue라는 인스턴스 프로퍼티 때문입니다! SwiftUI에서 이 projectedValue는 Binding<Value>로 감싸져 있는 get 프로퍼티입니다. 해당 프로퍼티를 사용할때는 $를 붙여주도록 되어 있죠. 왜냐하면 PropertyWrapper를 만들때 wrappedValue를 구현해야하는데 이와 헷갈리지 않아야 되기 때문이라고 생각해요🙋🏻 $를 왜 붙여주는지 근간을 탐구해봤습니다🏃🏻

projectedValue

iOYES

projectedValue

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 1월 17일 오전 11:03

댓글 0