В документации для GCDAsyncSocket
говорится, что изменяемые данные, которые могут измениться, должны быть скопированы перед передачей их в функцию записи.
В следующем коде:
func send(buffer: NSMutableData) {
let bufferCopy = NSData(data: buffer)
socket.writeData(bufferCopy, withTimeout: -1, tag: 0)
}
- Является ли вызов
NSData
правильным способом копирования буфера? - Будет ли
bufferCopy
храниться в памяти до тех пор, покаwriteData
(то естьasync
) не завершится, или оно будет локальным для отправки и будет уничтожено при выходе из функции?