Inflearn brand logo image

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

미홐님의 프로필 이미지
미홐

작성한 질문수

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

Thread number가 다 1로 나옵니다

해결된 질문

작성

·

33

1

스크린샷 2025-07-22 오전 10.41.50.png.webp

 

답변 2

0

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

안녕하세요
우측에 Swift version을 Swift5로 설정하고 한번 해보시겠어요?

0

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

현재 발생한 문제는 Swift의 비동기 코드에서 Thread.current를 사용할 때의 제한과 관련이 있습니다. 비동기 코드에서는 직접적인 스레드 관리가 어렵기 때문에 Swift는 이러한 기능 사용을 제한하는 경향이 있습니다. 특히 Swift 6에서는 비동기 코드를 더욱 강화하여 안전성을 높이고 있습니다.

비동기 코드의 특성 및 스레드 정보

  • Swift의 비동기 컨텍스트에서 Thread.current를 직접 호출하는 것은 추천되지 않습니다. 이로 인해, 예상하지 못한 동작이나 경고 메시지가 발생할 수 있습니다. 대신 메인 액터나 비동기 작업에 대한 정보를 얻기 위해 TaskDispatchQueue와 같은 추상화를 사용하는 것이 좋습니다.
  • 비동기 환경에서는 변수의 값을 변경할 때, 어떤 스레드에서 어떤 작업을 수행하는지 명확히 보장하기 어렵습니다. Swift의 Task는 자동으로 적절한 스레드나 큐에서 작업이 수행될 수 있도록 지원합니다.

해결 방법

  1. 메인 액터 사용: UI 업데이트나 메인 스레드에서 실행이 필요한 작업은 @MainActor를 붙여서 관리할 수 있습니다. 이는 SwiftUI의 주요 작동 방식과 잘 맞습니다.
   @MainActor
   func someUiUpdateFunction() {
       // UI 업데이트 작업
   }
  1. 비동기 콘텍스트 내에서 작업 수행: .async 혹은 .await 키워드를 사용하여 비동기 과정을 클래스를 관리하는 방법을 권장합니다.

추가로, 비슷한 문제의 해결 방법을 제공하는 다음 답변을 확인해 보시기 바랍니다:
- @State와 @Bindable의 사용 차이점 설명

이미지를 통해 오류 내용과 오류가 발생하는 환경에 대한 정보를 확인할 수 있습니다. 위 내용을 참고해 해결을 시도해 보시고, 추가적인 문제가 발생하거나 다른 궁금한 점이 있으시면 언제든지 질문해 주세요. 저희가 추가적인 도움을 제공하겠습니다.

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

미홐님의 프로필 이미지
미홐

작성한 질문수

질문하기