Как исправить утечку SocketStream с типом сервиса, установленным на VoIP? - PullRequest
0 голосов
/ 04 января 2019

Xcode report SocketStream объект просачивается после закрытия потоков. Утечка надежно воспроизводится на iPhone, но не на симуляторе или Mac.

Потоки создаются с CFStreamCreatePairWithSocketToCFHost, затем используются, закрываются и освобождаются, каждый раз оставляя другой SocketStream.

Я проверил сохранение истории в Instruments и обнаружил, что каждый раз, когда потоки чтения и записи закрываются, SocketStream сохраняет счетчик 2. (я предполагаю, что эти два сохранения сделаны в _CTServerConnecionCreateWithIdentifier из CoreTelephony)

retains

Глядя на то, как используются эти потоки, я заметил, что для свойства типа сетевой службы установлено значение VoIP (либо CFStreamNetworkServiceTypeVoIP, либо NSStreamNetworkServiceTypeVoIP). Я закомментировал эти строки, и утечки исчезли.

Итак, как правильно закрыть сервисные потоки VoIP? Может ли это быть как-то связано с устареванием VoIP?

...