Legi CFNetwork-prokurilajn rezultojn rekte en C++
Uzu la C-prokurilserĉajn API-ojn de Apple el C++ kaj tenu pruntitajn vortarajn valorojn vivaj sen liberigi ilin kiel posedatajn objektojn.
La prokurilserĉo de CFNetwork estas C-API uzebla rekte el C++; konverti ĉion en Objective-C-objektojn estas laŭvola. Voku CFNetworkCopyProxiesForURL kun la cela CFURL kaj agordoj el CFNetworkCopySystemProxySettings por ricevi ordigitajn prokurilajn vortarojn.
| Valoro | Posedo |
|---|---|
| Objektoj kreitaj aŭ redonitaj per Copy, inkluzive de vojoj kaj agordoj | Posedataj de la alvokanto; liberigu ĉiun posedatan objekton ne nulan |
| Vortaro el la tabelo aŭ gastiga nomo el la vortaro per Get | Pruntita; ne liberigu sen antaŭe reteni ĝin |
Por validaj routes kaj indekso ene de la intervalo, la eltiro povas esti:
CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
CFDictionaryGetValue(proxy, kCFProxyHostNameKey));
Legu kCFProxyTypeKey antaŭ ol trakti la eron kiel celpunkton. Rektaj kaj aŭtomate agorditaj kandidatoj postulas malsaman pritraktadon.
Konvertu la CFString-gastigonomon kaj la CFNumber-porton de konkreta ero dum la posedanto restas viva. La eltiritaj C++-valoroj povas poste eniri la agordon de la transporto. Por reteni la CFString mem post la rezulto, unue retenu ĝin kaj poste ekvilibrigu tion per CFRelease; alie finu antaŭ ol liberigi ĝian enhavantan posedanton.
Ĉe purigado liberigu la kreitan/kopiitan celan URL, la agordan vortaron kaj la rezultan tabelon, uzante ampleksogardiston se konvene. La tipo CFStringRef de variablo sola ne donas posedon super Get-rezulto.