Programming/iOS
[Swift] How to convert from void* to char*
ㄷㅣㅆㅣ
2017. 9. 5. 15:48
반응형
How to convert from void* to char*
I had to use f**king idiot library which is written by C++ in Swift project.
That library use void* for call back function to return.
(There are so many call back event, but that library use only one function pointer (returning void*) like above.)
1 2 | typedef void (* ANY_CB)(void *); void registerListener(ANY_CB *cbs, ANY_CB cb, ANY_EVENT event); | cs |
And I faced to problem.
The library call back with some log. so I had to convert void* to char*, then convert to String. because We need to check the library logs on Xcode console.
The solution is very simple. but I could find it nowhere..
(I try to convert UnsafeMutableRawPointer to UnsafeMutablePointer<CChar>, but I failed)
so I post this blog.
1 2 3 4 5 6 7 | registerListener(listener, { (log) in guard let log = log else { return } let opaquePtr = OpaquePointer(log) let logPtr = UnsafeMutablePointer<CChar>(opaquePtr) AISTTSManager.shared.onInfo(log: String(cString: logPtr)) }, ON_EVENT) | cs |
If you use OpaquePointer, then you can convert it to any other pointer. That's it!!
반응형