В настоящее время я работаю над iOS-приложением, используя pjSIP и swift.зарегистрировать быстрый поток как pj_thread
Я получил метод на в .c-файл для посылки вызова, пусть это будет
void makeCall(const char *destUri){
...
status = pjsua_call_make_call(...
}
и я получил быстрый метод, который вызывается из основного потока, который вызывающая makeCall-функцию из C-файла.
Если это так, приложение падает и, говоря, что мне нужно зарегистрировать поток в pjSIP перед вызовом функций pjLib.
Чтобы зарегистрировать поток в pjSIP Мне нужно вызвать функцию pj_thread_register
Я пытался добавить нить, как UnsafeMutablePointer.
моих звонки выглядят как это прямо сейчас:
void makeCall(const char *destUri, long threadDesc, pj_thread_t **thread){
...
pj_thread_register(NULL, &threadDesc, thread);
status = pjsua_call_make_call(...
}
internal static func makeSIPCall(numberToCall: String){
...
let destination = ... //my call destination
let thread : NSThread = NSThread.currentThread()
let observer = UnsafeMutablePointer<CopaquePointer>(Unmanaged.passUnretained(thread.self).toOpue())
makeCall(destination, Int(thread.description)! as Clong, observer)
}
Тема 1: EXC_Breakpoint и фатальная ошибка «нашел ноль в то время разворачивания необязательного значения»
Так как я могу передать необходимые свойства поток от swift до C?
Это ужасно бит дизайна со стороны авторов pjSIP, поскольку он мешает вам использовать GCD - что естественно делать в этих обстоятельствах. – marko
@marko это не ребята PJSIP, это ошибка Apple. У Swift все еще есть некоторые ограничения при использовании с C. – azimov
скажите мне еще ... – marko