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

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

랑프_Langpeu님의 프로필 이미지

작성한 질문수

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

45. 프로필 사진 서버에 업로드하기(AsyncImage VS Kingfisher)

45강의 에서 Kingfisher 사용후 발생하는 swift6 이슈

해결된 질문

작성

·

90

·

수정됨

1

ProfileEditingView 에서

PhotosPicker 안에서

KFImage 사용하니 에러가 발생 합니다.

 

Kingfisher v8.1.3 

 

스크린샷 2024-12-30 오전 11.35.11.png


PhotosPicker 밖에서 사용시 에는 문제 없습니다.

스크린샷 2024-12-30 오전 11.46.49.png

 

답변 2

0

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

안녕하세요 랑프님

이 부분은 아마 KingFisher문제인거 같습니다.

최근에 swift6관련해서 쓰레드 문제가 많이 일어나고 있는데요.

킹피셔가 대응해서 추후에 업데이트 된다면 괜찮아 질거 같습니다~

0

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

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

SwiftUI에서 PhotosPicker와 함께 KFImage를 사용하는 도중 발생하는 문제는 일반적으로 Swift의 동시성 모델과 관련 있습니다. 특히 Swift 6에서는 @MainActor 속성이 강조되었고, 비동기 환경에서 발생할 수 있는 문제의 가능성이 높아졌습니다. 아래는 해결 방안입니다:

  1. MainActor 사용 확인: KFImage와 같은 UI 업데이트를 수행하는 작업은 메인 스레드에서 이루어져야 합니다. SwiftUI에서는 일반적으로 이 작업이 자동으로 처리되지만, 때때로 명시적으로 지시할 필요가 있습니다.
   @MainActor
   func loadImage() {
       // KFImage 사용 코드
   }
  1. 비동기 처리 확인: PhotosPicker 안에서 이미지가 비동기적으로 로딩될 수 있으므로, KFImage 사용 시점이 이미 지연된 시점에 맞춰줘야 합니다.

  2. 최신 버전 확인: KFImage나 Kingfisher 라이브러리의 최신 버전을 사용하고 있는지 확인해 주세요. 가끔 라이브러리의 업데이트가 이러한 동시성 관련 문제를 해결해 주기도 합니다.

  3. 스레드 분리: 애플리케이션의 UI 업데이트와 네트워크 작업을 명확하게 분리해 작업이 메인 스레드에서 안전하게 실행되도록 보장합니다.

관련 질문과 답변을 아래 링크에서 확인하실 수 있습니다:

위의 해결 방법을 적용하여 문제를 해결하실 수 있을 것입니다.

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