[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🍎 Apple/Question

[iOS] Remote data를 가져올 때 Data(contentsOf:)를 사용하면 안되는 이유

inu 2022. 5. 17. 17:53
반응형

Remote data를 가져올 때 Data(contentsOf:)를 사용하면 안되는 이유

  • 일단 이 메서드는 동기적으로 작동한다는 것이 기본입니다. 따라서 현재작업중인 스레드의 모든 작업을 해당 작업을 수행하는 동안 멈추게할 위험이 있습니다. 이는 사용성에 매우 악영향을 주겠죠?
  • 그럼 DispatchQueue.global().async로 감싸주면 어떨까요? 이러면 스레드 문제도 해결되었으니 Data(contentsOf:)를 사용해도 괜찮은 것일까요?
  • 아예 안된다고 못박을 수는 없겠지만, 권장하지는 않습니다.
  • 먼저 main 스레드를 멈추는 문제는 해결했지만 여전히 GCD의 제한된 작업스레드 중 하나를 묶는 셈이 됩니다. 이는 직접적이진 않아도 간접적으로 성능에 영향을 줍니다.
  • 또한 URLSession과 달리 작업에 대한 의미있는 진단을 수행할 수 없습니다. URLSession에서는 오류가 네트워크 오류인지, HTTP 오류인지, contents 오류 인지 등을 판할 수 있는 반면 Data(contentsOf:)에서는 이를 확인할 수 없습니다.
  • 출처 : https://stackoverflow.com/questions/59722670/data-contentsof-yields-nil-but-the-url-is-valid
반응형