ทรานสปอร์ตที่ใช้สแนปช็อตพร็อกซีเฉพาะตอนเริ่มต้นอาจล้าสมัยได้หลังการเปลี่ยนเครือข่ายหรือตำแหน่ง สำหรับการสมัครรับ macOS SystemConfiguration ให้รักษาวงจรชีวิตนี้ไว้อย่างชัดเจน:

  1. สร้างเซสชัน SCDynamicStore พร้อม callback
  2. ลงทะเบียนคีย์หรือรูปแบบที่แน่นอนด้วย SCDynamicStoreSetNotificationKeys ค่าเหล่านี้เป็นอาร์เรย์แยกกัน คีย์พร็อกซีส่วนกลางคือ State:/Network/Global/Proxies เพิ่มอินพุตเฉพาะบริการเฉพาะที่ทรานสปอร์ตใช้งานเท่านั้น
  3. จัดการส่ง callback ผ่าน SCDynamicStoreSetDispatchQueue หรือแหล่ง run-loop ที่เหมาะสม การลงทะเบียนชื่อเพียงอย่างเดียวไม่ทำให้ callback ทำงาน
  4. เมื่อได้รับการแจ้งเตือน ให้อ่านการกำหนดค่าที่มีผลอีกครั้งและอัปเดตงานถัดไป รายการคีย์ที่เปลี่ยนแปลงไม่ใช่ตัวนโยบายใหม่ที่สมบูรณ์ในตัวเอง
  5. เมื่อปิด ให้ปิดการส่งด้วยคิวว่างก่อนปล่อยทรัพยากรที่ถือครองอยู่ เก็บที่เก็บและบริบท callback ให้อยู่จนถึงตอนนั้น

เฮดเดอร์ของ Apple กำหนดรายการคีย์ที่เปลี่ยนแปลงว่างเปล่าว่าเป็นการรีสตาร์ตเซิร์ฟเวอร์ที่เก็บแบบไดนามิก ในกรณีนั้นเช่นกัน ให้รีเฟรชสถานะที่เกี่ยวข้องและทิ้งสมมติฐานที่อิงเนื้อหาก่อนหน้า

นี่คือแนวทาง API macOS สาธารณะ เฮดเดอร์ของ Apple กำหนดให้ฟังก์ชันที่เกี่ยวข้องเป็น SPI ส่วนตัวสำหรับ iOS ดังนั้นการสมัครรับเดียวกันจึงไม่ใช่อินเทอร์เฟซแอปพลิเคชัน iOS สาธารณะ

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