0
在Objective-C中,您可以將調度源的事件處理程序指定爲塊或函數。從蘋果公司的Concurrency Programming Guide:Swift 3中DispatchSource的GCD函數事件處理程序?
基於函數的事件處理程序採取單一的上下文指針, 含派遣源對象,並沒有返回值。 基於塊的事件處理程序不採用參數,並且沒有返回 值。
在Swift 3中,是否仍然可以使用函數作爲事件處理程序?我只看到如何使用塊。我需要訪問我的處理程序中的源代碼,並且需要從源代碼的定義中分別定義我的處理程序。
您正在使用塊事件處理程序,但是您已經編寫了它以捕獲源代碼?是對的嗎?你是否也可以這樣做:'let foo:(DispatchSourceRead) - > Void = {print in print(「hi \(source)」)}'然後是'source.setEventHandler {foo(source)}'?換句話說,你爲什麼需要'Foo'類? – sam
你不需要這個班。那是我首先想到的,爲什麼你需要將它定義爲遠離源代碼。爲了防止捕獲,您可以將捕獲列表添加到使用弱引用來源的事件處理程序。 –