Les CFNetwork-proxyresultat direkte i C++
Bruk Apples C-API-ar for proxyoppslag frå C++, og hald lånte ordbokverdiar i live utan å frigje dei som eigne objekt.
Proxyoppslaget i CFNetwork er ein C-API som kan brukast direkte frå C++; å konvertere alt til Objective-C-objekt er valfritt. Kall CFNetworkCopyProxiesForURL med mål-CFURL-en og innstillingar frå CFNetworkCopySystemProxySettings for å få ordna proxyordbøker.
| Verdi | Eigarskap |
|---|---|
| Objekt som Copy lagar eller returnerer, inkludert ruter og innstillingar | Eigde av kallaren; frigje kvart eigd objekt som ikkje er null |
| Ordbok frå matrisa eller vertsnamn frå ordboka via Get | Lånt; ikkje frigje utan å ha halde på det |
For gyldige routes og ein indeks innanfor området kan utdraget vere:
CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
CFDictionaryGetValue(proxy, kCFProxyHostNameKey));
Les kCFProxyTypeKey før du handsamar oppføringa som eit endepunkt. Direkte og automatisk konfigurerte kandidatar krev ulik handsaming.
Konverter CFString-vertsnamnet og CFNumber-porten til ei konkret oppføring medan eigaren er i live. Utdregne C++-verdiar kan deretter gå inn i konfigurasjonen til transporten. For å halde sjølve CFString utover resultatet, hald på det først og balanser det seinare med CFRelease; elles avslutt før du frigjer eigaren som inneheld det.
Frigjer den oppretta/kopierte mål-URL-en, innstillingordboka og resultatmatrisa ved opprydding, og bruk ein scope guard der det høver. Ein variabels CFStringRef-type åleine gjev ikkje eigarskap over eit Get-resultat.