Xcode report SocketStream объект просачивается после закрытия потоков. Утечка надежно воспроизводится на iPhone, но не на симуляторе или Mac.
Потоки создаются с CFStreamCreatePairWithSocketToCFHost
, затем используются, закрываются и освобождаются, каждый раз оставляя другой SocketStream.
Я проверил сохранение истории в Instruments и обнаружил, что каждый раз, когда потоки чтения и записи закрываются, SocketStream сохраняет счетчик 2. (я предполагаю, что эти два сохранения сделаны в _CTServerConnecionCreateWithIdentifier
из CoreTelephony)
![retains](https://i.stack.imgur.com/QUTEB.png)
Глядя на то, как используются эти потоки, я заметил, что для свойства типа сетевой службы установлено значение VoIP (либо CFStreamNetworkServiceTypeVoIP
, либо NSStreamNetworkServiceTypeVoIP
). Я закомментировал эти строки, и утечки исчезли.
Итак, как правильно закрыть сервисные потоки VoIP? Может ли это быть как-то связано с устареванием VoIP?