인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

ksw님의 프로필 이미지

작성한 질문수

Part2: 초중급 iOS 인스타그램 클론(SwiftUI, MVVM, Firebase, 2024)

62. Follow, Unfollow 기능 구현

62강 Follow, Unfollow기능구현에서,,

해결된 질문

작성

·

59

0

7:15까지 코드 따라하고, 구동하는데;;

아래와 같이 에러가 뜹니다...

 

Thread 3: Simultaneous accesses to 0x600003d332b0, but modification requires exclusive access

 

구동조차 안되고 바로

image.png

아래와 같이 떠버려요;;

 

이건 어떻게 해결할가요???

답변 2

0

애구마(agmma)님의 프로필 이미지
애구마(agmma)
지식공유자

안녕하세요

xcode16에서 동시성 관련 문제가 엄격해져서 나타나는 문제인데요

checkFoolow 함수를 다음과 같이 바꾸시면 됩니다.

func checkFollow() {
    Task {
        let id = user?.id
        self.user?.isFollowing =  await AuthManager.shared.checkFollow(userId: id)
    }
}

 

관련해서 영상 추가해두겠습니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. ksw님.

현재 코드에서 발생한 “Simultaneous accesses to 0x600003d332b0, but modification requires exclusive access” 오류는 메모리 접근과 관련된 문제로, 동시에 여러 장소에서 같은 메모리 위치에 접근하려고 할 때 발생합니다. 주로 Swift에서 데이터 보호를 위해 설계된 메커니즘과 관련이 있습니다.

오류 설명

  1. 동시 접근 문제: 이 오류는 같은 데이터에 대해 동시에 여러 접근을 시도할 때 발생하며, 특히 읽기와 쓰기 작업이 충돌할 때 나타납니다.

  2. Swift의 안전성 메커니즘: Swift는 메모리 안전성을 강화하기 위해 이와 같은 동시 접근이 발생하면 경고 또는 오류를 발생시킵니다.

해결 방법

  • 데이터 요청 정리: 문제가 발생하는 코드에서는 하나의 스레드에서만 데이터를 읽고 쓰도록 구조를 변경해야 합니다.

  • @MainActor 사용: 데이터의 상태 관리에서 메인 스레드에서 동작하도록 보장해야 하는 요소가 있을 경우, @MainActor 를 적용해 확인해봅니다. 예:

  @MainActor
  class SomeViewModel: ObservableObject {
      @Published var someData: SomeType
      // ...
  }
  • 연산 순서 조정: 특정한 순간에만 데이터에 접근하도록 연산 순서를 조정하거나, 상호 배제(Mutex) 등을 통해 교착 상태를 피할 수 있습니다.

다음 두 개의 질문 답변도 참고하시기 바랍니다. 비슷한 오류의 해결 방법을 제공하고 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

ksw님의 프로필 이미지

작성한 질문수

질문하기