2
我目前正在使用pjSIP和swift在iOS應用程序上工作。註冊一個快速線程爲pj_thread
我在.C文件進行通話了一個方法上,讓它成爲
void makeCall(const char *destUri){
...
status = pjsua_call_make_call(...
}
和我得到的是從一個調用MakeCall函數功能的主線程調用一個方法迅速來自C文件。
如果我這樣做,應用程序崩潰,並說我需要在調用pjLib函數之前將線程註冊到pjSIP。
要註冊一個線程來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的線程?
這是一個可怕因爲它阻止你使用GCD - 這在這種情況下是很自然的事情。 – marko
@marko這不是PJSIP傢伙的錯,這是Apple的錯。與C一起使用時,Swift仍然有一些限制。 – azimov
告訴我更多... – marko