Čtení výsledků proxy z CFNetwork přímo v C++
Používejte C API Apple pro vyhledávání proxy z C++ a udržujte zapůjčené hodnoty slovníků naživu, aniž byste je uvolňovali jako vlastněné objekty.
Vyhledávání proxy v CFNetwork je C API použitelné přímo z C++; převod všeho na objekty Objective-C je volitelný. Zavolejte CFNetworkCopyProxiesForURL s cílovým CFURL a nastavením z CFNetworkCopySystemProxySettings, abyste získali seřazené slovníky proxy.
| Hodnota | Vlastnictví |
|---|---|
| Objekty vytvořené nebo vrácené funkcí Copy, včetně tras a nastavení | Vlastní volající; uvolněte každý vlastněný objekt, který není null |
| Slovník z pole nebo název hostitele ze slovníku přes Get | Zapůjčeno; neuvolňujte, dokud jste si jej neponechali |
Pro platné routes a index v rozsahu může extrakce vypadat takto:
CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
CFDictionaryGetValue(proxy, kCFProxyHostNameKey));
Přečtěte si kCFProxyTypeKey, než položku budete považovat za koncový bod. Přímí kandidáti a kandidáti automatické konfigurace vyžadují odlišné zacházení.
Převeďte název hostitele CFString a port CFNumber konkrétní položky, dokud je vlastník naživu. Extrahované hodnoty C++ pak mohou vstoupit do konfigurace transportu. Chcete-li samotný CFString podržet i po výsledku, nejprve jej podržte a později to vyvažte pomocí CFRelease; jinak skončete dříve, než uvolníte vlastníka, který jej obsahuje.
Při úklidu uvolněte vytvořenou/zkopírovanou cílovou URL, slovník nastavení a pole výsledků, případně pomocí scope guardu. Samotný typ CFStringRef proměnné nezakládá vlastnictví výsledku Get.