ASMusicKit을 만들고 나서 메소드를 사용해보려고 하였다.

image.png

다음과 같은 에러가 발생하였다.

Non-sendable type '[ASSong]' returned by implicitly asynchronous call to nonisolated function cannot cross actor boundary

프레임워크를 분리하지 않고 struct를 선언 해서 사용했을때는 다음과 같은 문제가 발생하지 않았으나 ASSong의 접근제어자를 public 으로 바꿔준 뒤부터 다음과 같은 문제가 발생하였다.

해결방법은 다음과 같았다.

  1. ASSong을 Sendable Protocol을 따르게 한다.
  2. 해당 메서드를 @MainActor 를 채택한다. (다만 이는 UI작업 같은 메인스레드가 작업해야하는 것이 확실한 경우에만 사용하는 것이 좋아보인다)

image.png

  1. 리턴값을 바로 넣는것이 아니라 값을 복사해서 넘긴다.

Sendable

Sendable 은 주어진 타입의 값들이 concurrent code 에서 안전하게 사용될 수 있음을 나타낸다.