Leggere i risultati proxy di CFNetwork direttamente in C++
Usate le API C di ricerca proxy di Apple da C++ e mantenete vivi i valori di dizionario presi in prestito senza rilasciarli come oggetti posseduti.
La ricerca proxy di CFNetwork è un'API C utilizzabile direttamente da C++; convertire tutto in oggetti Objective-C è facoltativo. Chiamate CFNetworkCopyProxiesForURL con il CFURL di destinazione e le impostazioni di CFNetworkCopySystemProxySettings per ottenere dizionari proxy ordinati.
| Valore | Proprietà |
|---|---|
| Oggetti creati o restituiti da Copy, comprese rotte e impostazioni | Di proprietà del chiamante; rilasciate ogni oggetto posseduto diverso da null |
| Dizionario dall'array o nome host dal dizionario tramite Get | Preso in prestito; non rilasciatelo senza averlo prima trattenuto |
Per routes validi e un indice nell'intervallo, l'estrazione può essere:
CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
CFDictionaryGetValue(proxy, kCFProxyHostNameKey));
Leggete kCFProxyTypeKey prima di trattare la voce come endpoint. I candidati diretti e quelli a configurazione automatica richiedono una gestione diversa.
Convertite il nome host CFString e la porta CFNumber di una voce concreta finché il proprietario resta vivo. I valori C++ estratti possono poi entrare nella configurazione del trasporto. Per conservare il CFString stesso oltre il risultato, trattenetelo prima e bilanciate poi con CFRelease; altrimenti terminate prima di rilasciare il proprietario che lo contiene.
Al momento della pulizia rilasciate l'URL di destinazione creato/copiato, il dizionario delle impostazioni e l'array dei risultati, usando un guard di ambito se opportuno. Il solo tipo CFStringRef di una variabile non conferisce la proprietà di un risultato di Get.