第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Swift命令行程序中的CFRunLoop

Swift命令行程序中的CFRunLoop

慕蓋茨4494581 2019-12-06 10:37:06
我正在使用第三方框架在Swift中編寫命令行應(yīng)用程序(如果我正確理解代碼),則當(dāng)套接字接收數(shù)據(jù)時,該框架依賴GCD回調(diào)來完成某些操作。為了更好地理解該框架,我一直在研究框架作者與框架一起編寫的示例Cocoa應(yīng)用程序。因為示例應(yīng)用程序是Cocoa應(yīng)用程序,所以運行循環(huán)是自動處理的。我包括示例應(yīng)用程序(MIT許可證)中的代碼片段,以提供其工作原理的概念:class AppDelegate: NSObject, NSApplicationDelegate {  var httpd : Connect!  func startServer() {    httpd = Connect()      .onLog {        [weak self] in // unowned makes this crash        self!.log($0)      }      .useQueue(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0))...     httpd.listen(1337)}... func applicationDidFinishLaunching(aNotification: NSNotification?) {    startServer()   ...    }  }我想修改示例應(yīng)用程序以從命令行運行。當(dāng)我將startServer()函數(shù)放入命令行應(yīng)用程序時,它將運行,但是套接字在打開后立即關(guān)閉,并且該程序以退出代碼0結(jié)束執(zhí)行。這是預(yù)期的行為,因為沒有運行循環(huán)在Xcode命令行項目中,因此程序不知道等待套接字接收數(shù)據(jù)。我相信使套接字保持打開狀態(tài)和使程序連續(xù)運行的正確方法是將主線程放入CFRunLoop中。我查看了Apple的文檔,除了基本的API參考外,Swift中的線程沒有任何內(nèi)容。我看過第三方資源,但是它們都涉及iOS和Cocoa應(yīng)用程序中的備用線程。如何為主線程正確實現(xiàn)CFRunLoop?
查看完整描述

2 回答

?
函數(shù)式編程

TA貢獻(xiàn)1807條經(jīng)驗 獲得超9個贊

似乎Martin R的答案應(yīng)該起作用,但是我能夠通過一個函數(shù)調(diào)用使套接字保持打開狀態(tài)。在startServer()函數(shù)的末尾,我添加了以下代碼:


CFRunLoopRun()

哪個有效。


查看完整回答
反對 回復(fù) 2019-12-06
  • 2 回答
  • 0 關(guān)注
  • 600 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號