CFNetwork starpniekservera rezultātu lasīšana tieši C++
Izmantojiet Apple C starpniekservera meklēšanas API no C++ un uzturiet aizņemtās vārdnīcas vērtības dzīvas, neatbrīvojot tās kā īpašumā esošus objektus.
CFNetwork starpniekservera meklēšana ir C API, ko var izmantot tieši no C++; visu pārvēršana Objective-C objektos nav obligāta. Izsauciet CFNetworkCopyProxiesForURL ar mērķa CFURL un CFNetworkCopySystemProxySettings iestatījumiem, lai iegūtu sakārtotas starpniekservera vārdnīcas.
| Vērtība | Īpašumtiesības |
|---|---|
| Objekti, ko Copy izveido vai atgriež, tostarp maršruti un iestatījumi | Pieder izsaucējam; atbrīvojiet katru īpašumā esošo objektu, kas nav null |
| Vārdnīca no masīva vai resursdatora nosaukums no vārdnīcas ar Get | Aizņemts; neatbrīvojiet to, iepriekš to nepaturot |
Derīgiem routes un indeksam diapazonā izguve var būt šāda:
CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
CFDictionaryGetValue(proxy, kCFProxyHostNameKey));
Izlasiet kCFProxyTypeKey, pirms uzskatāt ierakstu par galapunktu. Tiešajiem un automātiskās konfigurācijas kandidātiem nepieciešama atšķirīga apstrāde.
Pārvērtiet konkrēta ieraksta CFString resursdatora nosaukumu un CFNumber portu, kamēr īpašnieks ir dzīvs. Iegūtās C++ vērtības pēc tam var nonākt transporta konfigurācijā. Lai paturētu pašu CFString arī pēc rezultāta, vispirms paturiet to un vēlāk līdzsvarojiet ar CFRelease; pretējā gadījumā pabeidziet pirms tā saturošā īpašnieka atbrīvošanas.
Tīrīšanas laikā atbrīvojiet izveidoto/kopēto mērķa URL, iestatījumu vārdnīcu un rezultātu masīvu, vajadzības gadījumā izmantojot apjoma sargu. Tikai mainīgā CFStringRef tips pats par sevi nedod īpašumtiesības uz Get rezultātu.