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