Læs CFNetwork-proxyresultater direkte i C++
Brug Apples C-proxyopslags-API'er fra C++, og hold lånte ordbogsværdier i live uden at frigive dem som ejede objekter.
CFNetwork-proxyopslag er en C-API, der kan bruges direkte fra C++; det er valgfrit at konvertere alt til Objective-C-objekter. Kald CFNetworkCopyProxiesForURL med mål-CFURL'en og indstillinger fra CFNetworkCopySystemProxySettings for at få ordnede proxyordbøger.
| Værdi | Ejerskab |
|---|---|
| Objekter, der oprettes eller returneres af Copy, inklusive ruter og indstillinger | Ejet af kalderen; frigiv hvert ejet objekt, der ikke er null |
| Ordbog fra arrayet eller værtsnavn fra ordbogen via Get | Lånt; frigiv ikke, uden at du har beholdt det |
For gyldige routes og et indeks inden for området kan udtrækket være:
CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
CFDictionaryGetValue(proxy, kCFProxyHostNameKey));
Læs kCFProxyTypeKey, før du behandler posten som et endepunkt. Direkte og automatisk konfigurerede kandidater kræver forskellig håndtering.
Konverter en konkret posts CFString-værtsnavn og CFNumber-port, mens ejeren er i live. Udtrådte C++-værdier kan derefter indgå i transportens konfiguration. For at beholde selve CFString ud over resultatet skal du først beholde det og senere afbalancere det med CFRelease; ellers skal du være færdig, før du frigiver ejeren, der indeholder det.
Frigiv den oprettede/kopierede mål-URL, indstillingsordbogen og resultatarrayet ved oprydning, og brug en scope guard, hvis det er passende. En variabels CFStringRef-type alene giver ikke ejerskab over et Get-resultat.