Пошук проксі в CFNetwork — це C-API, яке можна використовувати безпосередньо з C++; перетворювати все на об'єкти Objective-C необов'язково. Викличте CFNetworkCopyProxiesForURL із цільовим CFURL і налаштуваннями з CFNetworkCopySystemProxySettings, щоб отримати впорядковані словники проксі.

ЗначенняВолодіння
Об'єкти, створені або повернені Copy, включно з маршрутами та налаштуваннямиНалежать викликачеві; звільняйте кожен власний об'єкт, що не дорівнює null
Словник із масиву або ім'я хоста зі словника через GetПозичено; не звільняйте, попередньо не зберігши володіння

Для коректних routes та індексу в межах діапазону вилучення може бути таким:

CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
    CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
    CFDictionaryGetValue(proxy, kCFProxyHostNameKey));

Прочитайте kCFProxyTypeKey, перш ніж розглядати запис як кінцеву точку. Прямі кандидати та кандидати автоматичної конфігурації потребують різної обробки.

Перетворіть ім'я хоста CFString і порт CFNumber конкретного запису, поки власник живий. Вилучені значення C++ потім можуть потрапити в конфігурацію транспорту. Щоб зберегти сам CFString після результату, спершу збережіть його, а потім урівноважте це через CFRelease; інакше завершіть роботу до звільнення власника, що його містить.

Під час очищення звільніть створений/скопійований цільовий URL, словник налаштувань і масив результатів, за потреби використовуючи охоронець області. Лише тип CFStringRef змінної не дає володіння результатом Get.

Схожі статті