Чытанне вынікаў проксі CFNetwork непасрэдна ў C++
Выкарыстоўвайце C-API Apple для пошуку проксі з C++ і трымайце пазычаныя значэнні слоўніка жывымі, не вызваляючы іх як уласныя аб'екты.
Пошук проксі ў CFNetwork — гэта C-API, якое можна выкарыстоўваць непасрэдна з C++; пераўтварэнне ўсяго ў аб'екты Objective-C неабавязковае. Выклічце CFNetworkCopyProxiesForURL з мэтавым CFURL і наладамі з CFNetworkCopySystemProxySettings, каб атрымаць упарадкаваныя слоўнікі проксі.
| Значэнне | Уласнасць |
|---|---|
| Аб'екты, створаныя або вернутыя Copy, уключаючы маршруты і налады | Належыць выклікаючаму; вызваляйце кожны ўласны аб'ект, які не роўны NULL |
| Слоўнік з масіва або імя хоста са слоўніка праз Get | Пазычана; не вызваляйце, папярэдне не захаваўшы |
Для сапраўдных routes і індэкса ў межах дыяпазону выманне можа выглядаць так:
CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
CFDictionaryGetValue(proxy, kCFProxyHostNameKey));
Прачытайце kCFProxyTypeKey, перш чым разглядаць запіс як канчатковы пункт. Прамыя кандыдаты і кандыдаты аўтаматычнай канфігурацыі патрабуюць рознай апрацоўкі.
Пераўтварыце імя хоста CFString і порт CFNumber канкрэтнага запісу, пакуль уласнік жывы. Выманныя значэнні C++ могуць затым трапіць у канфігурацыю транспарту. Каб захаваць сам CFString пасля выніку, спачатку захавайце яго, а потым ураўнаважце гэта праз CFRelease; інакш скончыце да вызвалення ўласніка, які яго змяшчае.
Пры ачыстцы вызваліце створаны/скапіяваны мэтавы URL, слоўнік налад і масіў вынікаў, пры неабходнасці выкарыстайце ахоўнік вобласці. Толькі тып CFStringRef зменнай не дае ўласнасці на вынік Get.