CFNetwork proksi natijalarini to'g'ridan-to'g'ri C++ da o'qish
Apple'ning C proksi qidiruv API'larini C++ dan foydalaning va qarzga olingan lug'at qiymatlarini egalik qilinadigan obyekt sifatida bo'shatmasdan tirik saqlang.
CFNetwork proksi qidiruvi C++ dan to'g'ridan-to'g'ri ishlatiladigan C API bo'lib, hamma narsani Objective-C obyektlariga aylantirish ixtiyoriy. Tartiblangan proksi lug'atlarini olish uchun CFNetworkCopyProxiesForURL ni maqsadli CFURL va CFNetworkCopySystemProxySettings sozlamalari bilan chaqiring.
| Qiymat | Egalik |
|---|---|
| Copy yaratgan yoki qaytargan obyektlar, marshrutlar va sozlamalar bilan birga | Chaqiruvchiga tegishli; null bo'lmagan har bir egalik obyektini bo'shating |
| Massivdan olingan lug'at yoki Get orqali lug'atdan olingan host nomi | Qarzga olingan; ushlab turmasdan bo'shatmang |
Yaroqli routes va oraliqdagi indeks uchun ajratib olish quyidagicha bo'lishi mumkin:
CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
CFDictionaryGetValue(proxy, kCFProxyHostNameKey));
Yozuvni oxirgi nuqta deb ko'rishdan oldin kCFProxyTypeKey ni o'qing. To'g'ridan-to'g'ri va avtomatik sozlama nomzodlari turlicha ishlov berishni talab qiladi.
Ega tirik ekan, muayyan yozuvning CFString host nomini va CFNumber portini aylantiring. Ajratib olingan C++ qiymatlari keyin transport konfiguratsiyasiga kirishi mumkin. CFString ning o'zini natijadan keyin ham saqlab qolish uchun avval uni ushlab turing, keyin buni CFRelease bilan muvozanatlang; aks holda uni saqlovchi egasini bo'shatishdan oldin ishni tugating.
Tozalashda yaratilgan/ko'chirilgan maqsadli URL, sozlamalar lug'ati va natija massivini bo'shating, kerak bo'lsa qamrov qo'riqchisidan foydalaning. O'zgaruvchining faqat CFStringRef turi Get natijasiga egalik bermaydi.