GCDAsyncSocket - 如何编写可变数据?

时间:2016-04-14 02:24:23

标签: ios swift gcdasyncsocket

SavingAccount的文档说可能更改的可变数据应该在传递给write函数之前复制。

在以下代码中:

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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