Čítanie výsledkov proxy z CFNetwork priamo v C++
Používajte C API Apple na vyhľadávanie proxy z C++ a udržujte požičané hodnoty slovníkov nažive bez ich uvoľňovania ako vlastnených objektov.
Vyhľadávanie proxy v CFNetwork je C API použiteľné priamo z C++; prevod všetkého na objekty Objective-C je voliteľný. Zavolajte CFNetworkCopyProxiesForURL s cieľovým CFURL a nastaveniami z CFNetworkCopySystemProxySettings, aby ste získali zoradené slovníky proxy.
| Hodnota | Vlastníctvo |
|---|---|
| Objekty vytvorené alebo vrátené funkciou Copy vrátane trás a nastavení | Vlastní ich volajúci; uvoľnite každý vlastnený objekt, ktorý nie je null |
| Slovník z poľa alebo názov hostiteľa zo slovníka cez Get | Požičané; neuvoľňujte bez predchádzajúceho podržania |
Pre platné routes a index v rozsahu môže extrakcia vyzerať takto:
CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
CFDictionaryGetValue(proxy, kCFProxyHostNameKey));
Prečítajte si kCFProxyTypeKey skôr, než položku budete považovať za koncový bod. Priami kandidáti a kandidáti automatickej konfigurácie vyžadujú odlišné zaobchádzanie.
Preveďte CFString názov hostiteľa a CFNumber port konkrétnej položky, kým je vlastník nažive. Extrahované hodnoty C++ potom môžu vstúpiť do konfigurácie transportu. Ak chcete samotný CFString podržať aj po výsledku, najprv ho podržte a neskôr to vyvážte pomocou CFRelease; inak skončite pred uvoľnením vlastníka, ktorý ho obsahuje.
Pri upratovaní uvoľnite vytvorenú/skopírovanú cieľovú URL, slovník nastavení a pole výsledkov, podľa potreby pomocou scope guardu. Samotný typ CFStringRef premennej nezakladá vlastníctvo výsledku Get.