CFNetworki puhverserveri tulemuste otselugemine C++-s
Kasutage Apple'i C-puhverserveri otsingu API-sid C++-st ja hoidke laenatud sõnastiku väärtused elus, ilma neid omandatud objektidena vabastamata.
CFNetworki puhverserveri otsing on C-API, mida saab kasutada otse C++-st; kõige teisendamine Objective-C objektideks on valikuline. Kutsuge CFNetworkCopyProxiesForURL siht-CFURL-i ja CFNetworkCopySystemProxySettings seadetega, et saada järjestatud puhverserveri sõnastikud.
| Väärtus | Omandiõigus |
|---|---|
| Copy loodud või tagastatud objektid, sealhulgas marsruudid ja seaded | Kutsuja omand; vabastage iga omandatud objekt, mis ei ole null |
| Massiivist saadud sõnastik või Get-i kaudu sõnastikust saadud hostinimi | Laenatud; ärge vabastage ilma seda eelnevalt hoidmata |
Kehtivate routes ja vahemikku jääva indeksi korral võib väljavõte olla:
CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
CFDictionaryGetValue(proxy, kCFProxyHostNameKey));
Lugege kCFProxyTypeKey enne, kui käsitlete kirjet lõpp-punktina. Otsesed ja automaatse konfiguratsiooni kandidaadid nõuavad erinevat käsitlemist.
Teisendage konkreetse kirje CFString-hostinimi ja CFNumber-port, kuni omanik on elus. Väljavõetud C++ väärtused saavad seejärel transportija konfiguratsiooni siseneda. CFStringi enda hoidmiseks pärast tulemust hoidke seda esmalt ja tasakaalustage see hiljem CFRelease-iga; vastasel juhul lõpetage enne seda sisaldava omaniku vabastamist.
Puhastamisel vabastage loodud/kopeeritud siht-URL, seadete sõnastik ja tulemuste massiiv, kasutades vajaduse korral ulatuse kaitset. Muutuja CFStringRef-tüüp üksi ei anna Get-tulemuse üle omandiõigust.