Citirea rezultatelor proxy CFNetwork direct în C++
Folosiți API-urile C de căutare a proxy-urilor de la Apple din C++ și păstrați valorile de dicționar împrumutate vii fără a le elibera ca obiecte deținute.
Căutarea proxy din CFNetwork este un API C care poate fi folosit direct din C++; transformarea tuturor în obiecte Objective-C este opțională. Apelați CFNetworkCopyProxiesForURL cu CFURL-ul țintă și setările din CFNetworkCopySystemProxySettings pentru a obține dicționare proxy ordonate.
| Valoare | Proprietate |
|---|---|
| Obiecte create sau returnate de Copy, inclusiv rute și setări | Deținute de apelant; eliberați fiecare obiect deținut care nu este null |
| Dicționar din tablou sau nume de gazdă din dicționar prin Get | Împrumutat; nu îl eliberați fără să îl fi reținut |
Pentru routes valide și un index în interval, extragerea poate fi:
CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
CFDictionaryGetValue(proxy, kCFProxyHostNameKey));
Citiți kCFProxyTypeKey înainte de a trata intrarea ca punct final. Candidații direcți și cei de configurare automată necesită tratamente diferite.
Convertiți numele de gazdă CFString și portul CFNumber ale unei intrări concrete cât timp proprietarul rămâne în viață. Valorile C++ extrase pot intra apoi în configurația transportului. Pentru a reține CFString însuși după rezultat, rețineți-l mai întâi și echilibrați apoi cu CFRelease; altfel terminați înainte de a elibera proprietarul care îl conține.
La curățare eliberați URL-ul țintă creat/copiat, dicționarul de setări și tabloul de rezultate, folosind un gard de domeniu dacă este potrivit. Doar tipul CFStringRef al unei variabile nu acordă proprietate asupra unui rezultat Get.