IOS/SwiftUI (2) 썸네일형 리스트형 @Published 변수를 재사용하는 문제와 해결 앱에서 발생했던 버그 중 하나가 어떤 게시물에 좋아요를 눌렀을 때 피드에 있는 모든 게시물이 다 함께 좋아요가 눌리는 현상이었습니다. 문제의 원인을 찾아보니 각각의 게시물마다 @Published 변수를 같이 사용하고 있는 것이 문제였습니다. 모든 게시물 뷰가 load(onAppear)될 때 매번 해당 게시물을 현재 사용자가 좋아요를 눌렀는지 서버로부터 받아오지만 그 값을 모두가 공유하는 Published 변수에 담다보니 결국 다른 게시물들과 좋아요 상태를 공유하는 버그가 발생했습니다. 문제 발생 class LikeStore: ObservableObject { // 좋아요를 저장하는 배열 @Published var likes: [Like] = [] // likes를 서버에서 받아서 likes에 넣어주는 기.. SwiftUI Property Wrapper (@StateObject, @ObservedObject, @EnvironmentObject) 차이점 및 코드 예시 SwiftUI에서 property wrapper는 view의 상태를 관리하는 데 사용됩니다. SwiftUI에서 객체를 관리하는 데 사용되는 주요 property wrapper는 @StateObject, @ObservedObject 및 @EnvironmentObject입니다. @StateObject @StateObject는 뷰 전체에서 사용 될 새 객체를 생성하는 데 사용됩니다. 객체는 한 번만 생성되며 뷰의 전체 수명주기 동안 유지됩니다. 이것은 뷰의 다른 부분에서 사용할 새 객체를 만들고자 할 때 유용합니다. struct ContentView: View { @StateObject var viewModel = ViewModel() var body: some View { Text(viewModel.name.. 이전 1 다음