Les CFNetwork-proxyresultater direkte i C++
Bruk Apples C-API-er for proxyoppslag fra C++, og hold lånte ordbokverdier i live uten å frigjøre dem som egne objekter.
CFNetwork sitt proxyoppslag er en C-API som kan brukes direkte fra C++; å konvertere alt til Objective-C-objekter er valgfritt. Kall CFNetworkCopyProxiesForURL med mål-CFURL-en og innstillinger fra CFNetworkCopySystemProxySettings for å få ordnede proxyordbøker.
| Verdi | Eierskap |
|---|---|
| Objekter som opprettes eller returneres av Copy, inkludert ruter og innstillinger | Eid av kalleren; frigjør hvert eid objekt som ikke er null |
| Ordbok fra matrisen eller vertsnavn fra ordboken via Get | Lånt; ikke frigjør uten å ha beholdt det |
For gyldige routes og en indeks innenfor området kan uttrekket være:
CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
CFDictionaryGetValue(proxy, kCFProxyHostNameKey));
Les kCFProxyTypeKey før du behandler oppføringen som et endepunkt. Direkte og automatisk konfigurerte kandidater krever ulik behandling.
Konverter en konkret oppførings CFString-vertsnavn og CFNumber-port mens eieren er i live. Uttrukne C++-verdier kan deretter gå inn i transportens konfigurasjon. For å beholde selve CFString utover resultatet, behold det først og balanser det senere med CFRelease; ellers avslutt før du frigjør eieren som inneholder det.
Frigjør den opprettede/kopierte mål-URL-en, innstillingordboken og resultatmatrisen ved opprydding, og bruk en scope guard hvis det passer. En variabels CFStringRef-type alene gir ikke eierskap over et Get-resultat.