본문 바로가기
코틀린 멀티플랫폼 KMP 개발/📚 KMP 공부

Kotlin Native (iOS) 부분에서 Error 받아내는 CPointer 만들기

by 아이엔 / ienground 2025. 2. 22.

종종 이런 부분과 같이 error를 CPointer로 받는 아이들이 있는데, 어떻게 할당하고 받아오는지 당최 모를 때가 많았다. 이 때문에 블로그에 따로 정리를 하려고 한다.

 

먼저 메모리 할당을 위해서는 `memScoped` 블록을 만들어 주어야 한다.

이후 타입에 따라 다음과 같은 CPointer를 만들어준다.

val error = interpretCPointer<ObjCObjectVar<NSError?>>(alloc(sizeOf<ObjCObjectVar<NSError?>>(), alignOf<ObjCObjectVar<NSError?>>()).rawPtr)

 

이후 이 포인터를 요하는 곳에 `error`를 넣어준다. 그러면 이 값을 어떻게 받는가?

val err = error?.pointed?.value  // NSError 가져오기
println("Copy failed: ${err?.localizedDescription ?: "Unknown error"}")

 

이런 식으로, 해당 포인터의 값을 받아올 수 있다.

`copyItemAtPath` 함수뿐 아니라 다양한 곳에서 해당 부분을 응용하면 된다.