Odczyt wyników proxy CFNetwork bezpośrednio w C++
Używaj C-API wyszukiwania proxy firmy Apple z poziomu C++ i utrzymuj pożyczone wartości słownika przy życiu, nie zwalniając ich jako obiektów posiadanych.
Wyszukiwanie proxy w CFNetwork to C-API, którego można używać bezpośrednio z C++; konwersja wszystkiego na obiekty Objective-C jest opcjonalna. Wywołaj CFNetworkCopyProxiesForURL z docelowym CFURL i ustawieniami z CFNetworkCopySystemProxySettings, aby otrzymać uporządkowane słowniki proxy.
| Wartość | Własność |
|---|---|
| Obiekty tworzone lub zwracane przez Copy, w tym trasy i ustawienia | Należą do wywołującego; zwolnij każdy posiadany obiekt różny od null |
| Słownik z tablicy lub nazwa hosta ze słownika przez Get | Pożyczone; nie zwalniaj bez uprzedniego zachowania |
Dla prawidłowych routes i indeksu w zakresie wyodrębnienie może wyglądać tak:
CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
CFDictionaryGetValue(proxy, kCFProxyHostNameKey));
Przeczytaj kCFProxyTypeKey, zanim potraktujesz wpis jako punkt końcowy. Kandydaci bezpośredni i ci z automatycznej konfiguracji wymagają odmiennego traktowania.
Konwertuj nazwę hosta CFString i port CFNumber konkretnego wpisu, dopóki właściciel żyje. Wyodrębnione wartości C++ mogą następnie trafić do konfiguracji transportu. Aby zachować sam CFString po wyniku, najpierw go zachowaj, a później zrównoważ to przez CFRelease; w przeciwnym razie zakończ przed zwolnieniem właściciela, który go zawiera.
Przy sprzątaniu zwolnij utworzony/skopiowany docelowy URL, słownik ustawień i tablicę wyników, w razie potrzeby używając strażnika zakresu. Sam typ CFStringRef zmiennej nie daje własności wyniku Get.