0
GCDAsyncSocket
的文檔說可能更改的可變數據在傳遞給寫函數之前應該被複制。GCDAsyncSocket - 如何編寫可變數據?
在下面的代碼:
func send(buffer: NSMutableData) {
let bufferCopy = NSData(data: buffer)
socket.writeData(bufferCopy, withTimeout: -1, tag: 0)
}
- 是調用
NSData
複製的緩衝區的正確方法? - 將
bufferCopy
保留在內存中,直到writeData
(即async
)完成,或者是本地發送,並在函數退出時銷燬?
當你說「從函數返回時釋放」,你指的是哪個函數? – Ravi
在這種情況下,「發送」功能 – Shripada
發送完成後writeData可能無法完成。我沒有在代碼示例中顯示它,但writeData有一個異步委託「didWriteWithTag」。在調用委託之前是否會保留bufferCopy,或者在發送完成後解除分配? – Ravi