gpt4 book ai didi

ios - GCDAsyncSocket - 如何写入可变数据?

转载 作者:行者123 更新时间:2023-11-29 01:04:13 29 4
gpt4 key购买 nike

GCDAsyncSocket 的文档说,在将可能更改的可变数据传递给写入函数之前,应该复制它。

在下面的代码中:

func send(buffer: NSMutableData) {
let bufferCopy = NSData(data: buffer)
socket.writeData(bufferCopy, withTimeout: -1, tag: 0)
}
  1. 调用 NSData 是复制缓冲区的正确方法吗?
  2. bufferCopy 是否会保留在内存中直到 writeData(即 async)完成,或者是在本地发送,并在函数退出?

最佳答案

1。调用 NSData 是复制缓冲区的正确方法吗?

是的,它将字节复制到一个新的数据对象

2。 bufferCopy 会一直保留在内存中直到 writeData(异步)完成,还是在本地发送,并在函数退出时销毁?

是的,它会一直保留到 writeData 完成。此外,一旦您从函数 send 返回,它将被释放,因为如果 writeData 是同步的,则没有任何其他来自外部的强引用。如果 WriteData 是异步调用,一旦调用完成,数据将被释放,因为不会有任何强引用,因为控制将来自发送和 WriteData 异步调用。因此,如果此调用是异步的,则意味着该调用需要具有对 bufferCopy 的强引用。

关于ios - GCDAsyncSocket - 如何写入可变数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36612768/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com