CFNetwork proxyeredmények közvetlen olvasása C++-ból
Használja az Apple C proxykereső API-jait C++-ból, és tartsa életben a kölcsönzött szótári értékeket anélkül, hogy tulajdonolt objektumként felszabadítaná őket.
A CFNetwork proxykeresése olyan C API, amely közvetlenül használható C++-ból; mindent Objective-C objektumokká alakítani nem kötelező. Hívja meg a CFNetworkCopyProxiesForURL-t a cél CFURL-lel és a CFNetworkCopySystemProxySettings beállításaival, hogy rendezett proxyszótárakat kapjon.
| Érték | Tulajdonjog |
|---|---|
| A Copy által létrehozott vagy visszaadott objektumok, beleértve az útvonalakat és beállításokat | A hívó tulajdona; szabadítson fel minden nem null tulajdonolt objektumot |
| Szótár a tömbből, illetve gazdanév a szótárból a Get-en keresztül | Kölcsönzött; ne szabadítsa fel anélkül, hogy megtartotta volna |
Érvényes routes és tartományon belüli index esetén a kinyerés így nézhet ki:
CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
CFDictionaryGetValue(proxy, kCFProxyHostNameKey));
Olvassa el a kCFProxyTypeKey-t, mielőtt a bejegyzést végpontként kezelné. A közvetlen és az automatikus konfigurációs jelöltek eltérő kezelést igényelnek.
Alakítsa át egy konkrét bejegyzés CFString gazdanevét és CFNumber portját, amíg a tulajdonos életben van. A kinyert C++ értékek ezután bekerülhetnek a szállító konfigurációjába. Ha magát a CFStringet az eredmény után is meg akarja tartani, először tartsa meg, majd később egyenlítse ezt ki CFRelease-szel; ellenkező esetben végezzen az előtt, hogy felszabadítaná az őt tartalmazó tulajdonost.
Takarításkor szabadítsa fel a létrehozott/másolt cél URL-t, a beállításszótárt és az eredménytömböt, szükség esetén hatókörőrrel. Egy változó CFStringRef típusa önmagában nem ad tulajdonjogot egy Get-eredmény felett.