การค้นหาพร็อกซีของ 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

บทความที่เกี่ยวข้อง