Basahin ang mga resulta ng proxy ng CFNetwork nang direkta sa C++
Gamitin ang mga C API ng paghahanap ng proxy ng Apple mula sa C++ at panatilihing buhay ang mga hiram na halaga ng dictionary nang hindi inilalabas bilang pag-aaring bagay.
Ang paghahanap ng proxy ng CFNetwork ay isang C API na magagamit nang direkta mula sa C++; ang pag-convert ng lahat sa mga bagay na Objective-C ay opsyonal. Tawagin ang CFNetworkCopyProxiesForURL kasama ang target na CFURL at mga setting mula sa CFNetworkCopySystemProxySettings upang makakuha ng mga nakaayos na dictionary ng proxy.
| Halaga | Pagmamay-ari |
|---|---|
| Mga bagay na ginawa o ibinalik ng Copy, kabilang ang mga ruta at setting | Pag-aari ng tumatawag; ilabas ang bawat pag-aaring bagay na hindi null |
| Dictionary mula sa array o hostname mula sa dictionary sa pamamagitan ng Get | Hiram; huwag ilabas nang hindi ito hawak |
Para sa mga wastong routes at index na nasa saklaw, ang pagkuha ay maaaring:
CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
CFDictionaryGetValue(proxy, kCFProxyHostNameKey));
Basahin ang kCFProxyTypeKey bago ituring ang entry bilang endpoint. Ang mga direktang kandidato at kandidato ng awtomatikong pagsasaayos ay nangangailangan ng magkaibang pagtrato.
I-convert ang CFString hostname at CFNumber port ng isang partikular na entry habang buhay ang may-ari. Ang mga nakuhang halaga sa C++ ay maaaring pumasok sa pagsasaayos ng transport. Upang panatilihin ang CFString mismo lampas sa resulta, hawakan muna ito at balansehin ito sa CFRelease sa ibang pagkakataon; kung hindi, tapusin bago ilabas ang may-ari na naglalaman nito.
Sa paglilinis, ilabas ang ginawa/kinopyang target na URL, dictionary ng setting at array ng resulta, gamit ang scope guard kung angkop. Ang uri lamang na CFStringRef ng isang variable ay hindi nagbibigay ng pagmamay-ari sa resulta ng Get.