CFNetwork-välityspalvelintulosten lukeminen suoraan C++:ssa
Käytä Applen C-välityspalvelinhakujen API-rajapintoja C++:sta ja pidä lainatut sanakirja-arvot elossa vapauttamatta niitä omistettuina objekteina.
CFNetworkin välityspalvelinhaku on C-rajapinta, jota voi käyttää suoraan C++:sta; kaiken muuntaminen Objective-C-objekteiksi on valinnaista. Kutsu CFNetworkCopyProxiesForURL kohde-CFURL:n ja CFNetworkCopySystemProxySettings-asetusten kanssa saadaksesi järjestetyt välityspalvelinsanakirjat.
| Arvo | Omistus |
|---|---|
| Copyn luomat tai palauttamat objektit, mukaan lukien reitit ja asetukset | Kutsujan omistuksessa; vapauta jokainen omistettu objekti, joka ei ole null |
| Taulukosta saatava sanakirja tai Getin kautta sanakirjasta saatava isäntänimi | Lainattu; älä vapauta ilman, että olet pitänyt sitä |
Kelvollisille routes-arvoille ja alueen sisällä olevalle indeksille poiminta voi olla:
CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
CFDictionaryGetValue(proxy, kCFProxyHostNameKey));
Lue kCFProxyTypeKey ennen kuin käsittelet merkinnän päätepisteenä. Suorat ja automaattisen määrityksen ehdokkaat vaativat erilaista käsittelyä.
Muunna tietyn merkinnän CFString-isäntänimi ja CFNumber-portti, kun omistaja on elossa. Poimitut C++-arvot voivat sitten siirtyä siirtokerroksen määritykseen. Jos haluat pitää itse CFStringin tuloksen jälkeen, pidä se ensin ja tasapainota se myöhemmin CFReleasella; muuten lopeta ennen sitä sisältävän omistajan vapauttamista.
Vapauta siivouksessa luotu/kopioitu kohde-URL, asetussanakirja ja tulosjoukon taulukko ja käytä tarvittaessa laajuusvartijaa. Muuttujan CFStringRef-tyyppi yksin ei anna omistusta Get-tulokseen.