Как исправить утечку SocketStream с типом сервиса, установленным на VoIP?
Xcode report SocketStream объект просачивается после закрытия потоков. Утечка надежно воспроизводится на iPhone, но не на симуляторе или Mac.
Потоки создаются с CFStreamCreatePairWithSocketToCFHost
, затем используется, закрывается и освобождается, каждый раз оставляя другой SocketStream.
Я проверил сохранение истории в Инструментах и обнаружил, что каждый раз, когда потоки чтения и записи закрываются, SocketStream сохраняет счетчик 2. (Я предполагаю, что эти два сохранения сделаны в _CTServerConnecionCreateWithIdentifier
от CoreTelephony)
Глядя на то, как используются эти потоки, я заметил, что для свойства типа сетевой службы установлено значение VoIP (либо CFStreamNetworkServiceTypeVoIP
или же NSStreamNetworkServiceTypeVoIP
). Я закомментировал эти строки, и утечки исчезли.
Итак, как правильно закрыть потоки услуг VoIP? Может ли это быть как-то связано с устареванием VoIP?