Μια μεταφορά που χρησιμοποιεί στιγμιότυπο διαμεσολαβητή μόνο κατά την εκκίνηση μπορεί να παραμείνει παρωχημένη μετά από αλλαγή δικτύου ή τοποθεσίας. Για μια εγγραφή macOS SystemConfiguration, κρατήστε αυτόν τον κύκλο ζωής σαφή:

  1. Δημιουργήστε μια συνεδρία SCDynamicStore με συνάρτηση επανάκλησης.
  2. Καταχωρίστε ακριβή κλειδιά ή μοτίβα με το SCDynamicStoreSetNotificationKeys. Πρόκειται για ξεχωριστούς πίνακες. Το καθολικό κλειδί διαμεσολαβητή είναι το State:/Network/Global/Proxies· προσθέστε εισόδους ειδικές για υπηρεσία μόνο όπου η μεταφορά τις καταναλώνει.
  3. Οργανώστε την παράδοση της επανάκλησης μέσω του SCDynamicStoreSetDispatchQueue ή της κατάλληλης πηγής run-loop. Η καταχώριση μόνο ονομάτων δεν εκτελεί την επανάκληση.
  4. Στην ειδοποίηση, διαβάστε ξανά την ενεργή διαμόρφωση και ενημερώστε την επόμενη εργασία. Η λίστα αλλαγμένων κλειδιών δεν είναι από μόνη της η πλήρης νέα πολιτική.
  5. Κατά τον τερματισμό, απενεργοποιήστε την παράδοση με μηδενική ουρά πριν απελευθερώσετε τους ιδιόκτητους πόρους. Κρατήστε τον χώρο και το πλαίσιο επανάκλησης ζωντανά μέχρι τότε.

Η κεφαλίδα της Apple ορίζει μια κενή λίστα αλλαγμένων κλειδιών ως επανεκκίνηση του διακομιστή δυναμικού χώρου. Και σε αυτή την περίπτωση, ανανεώστε τη σχετική κατάσταση και απορρίψτε υποθέσεις που βασίζονται στο προηγούμενο περιεχόμενο.

Αυτή είναι μια δημόσια προσέγγιση API του macOS. Οι κεφαλίδες της Apple χαρακτηρίζουν τις αντίστοιχες συναρτήσεις ως ιδιωτικό SPI για iOS, επομένως η ίδια εγγραφή δεν είναι δημόσια διεπαφή εφαρμογών iOS.

Σχετικά άρθρα