Čitanje CFNetwork proxy rezultata direktno u C++
Koristite Apple C API za pretragu proxyja iz C++ i držite pozajmljene vrijednosti rječnika živima bez oslobađanja kao posjedovanih objekata.
CFNetwork pretraga proxyja je C API koji se može koristiti direktno iz C++; pretvaranje svega u Objective-C objekte je opcionalno. Pozovite CFNetworkCopyProxiesForURL s ciljnim CFURL-om i postavkama iz CFNetworkCopySystemProxySettings da biste dobili uređene rječnike proxyja.
| Vrijednost | Vlasništvo |
|---|---|
| Objekti koje Copy stvara ili vraća, uključujući rute i postavke | Vlasništvo pozivaoca; oslobodite svaki posjedovani objekat koji nije null |
| Rječnik iz niza ili ime hosta iz rječnika preko Get | Pozajmljeno; ne oslobađajte bez prethodnog zadržavanja |
Za važeće routes i indeks u rasponu, izdvajanje može biti:
CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
CFDictionaryGetValue(proxy, kCFProxyHostNameKey));
Pročitajte kCFProxyTypeKey prije nego što unos tretirate kao krajnju točku. Direktni i kandidati automatske konfiguracije zahtijevaju različito rukovanje.
Pretvorite CFString ime hosta i CFNumber port konkretnog unosa dok je vlasnik živ. Izvučene C++ vrijednosti tada mogu ući u konfiguraciju transporta. Da biste zadržali sam CFString nakon rezultata, prvo ga zadržite i kasnije to uravnotežite s CFRelease; u suprotnom završite prije oslobađanja vlasnika koji ga sadrži.
Pri čišćenju oslobodite kreirani/kopirani ciljni URL, rječnik postavki i niz rezultata, koristeći čuvar opsega ako je prikladno. Sam tip CFStringRef varijable ne daje vlasništvo nad Get rezultatom.