Lire les résultats de proxy CFNetwork directement en C++
Utilisez les API C de recherche de proxy d'Apple depuis C++ et gardez vivantes les valeurs de dictionnaire empruntées sans les libérer comme des objets possédés.
La recherche de proxy de CFNetwork est une API C utilisable directement depuis C++ ; convertir tout en objets Objective-C est facultatif. Appelez CFNetworkCopyProxiesForURL avec le CFURL cible et les réglages de CFNetworkCopySystemProxySettings pour obtenir des dictionnaires de proxy ordonnés.
| Valeur | Propriété |
|---|---|
| Objets créés ou renvoyés par Copy, y compris les routes et les réglages | Possédés par l'appelant ; libérez chaque objet possédé non nul |
| Dictionnaire issu du tableau ou nom d'hôte issu du dictionnaire via Get | Emprunté ; ne le libérez pas sans l'avoir préalablement retenu |
Pour des routes valides et un indice dans la plage, l'extraction peut être :
CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
CFDictionaryGetValue(proxy, kCFProxyHostNameKey));
Lisez kCFProxyTypeKey avant de traiter l'entrée comme un point de terminaison. Les candidats directs et ceux de configuration automatique demandent un traitement différent.
Convertissez le nom d'hôte CFString et le port CFNumber d'une entrée concrète tant que le propriétaire reste vivant. Les valeurs C++ extraites peuvent ensuite entrer dans la configuration du transport. Pour conserver le CFString lui-même au-delà du résultat, retenez-le d'abord puis équilibrez cela avec CFRelease ; sinon, terminez avant de libérer le propriétaire qui le contient.
Libérez l'URL cible créée/copiée, le dictionnaire de réglages et le tableau de résultats lors du nettoyage, avec un garde de portée si nécessaire. Le seul type CFStringRef d'une variable ne confère pas la propriété d'un résultat de Get.