Читање CFNetwork прокси резултата директно у C++
Користите Apple C API за претрагу проксија из 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 резултатом.