HintergrundObjective-C: erzwingen Kompilierungsfehler auf NULL-Zulässigkeit Anmerkung Verletzung
Wir öffentliche dynamische iOS/macOS Rahmen entwickelt haben. Das Framework ist in Objective-C geschrieben, aber es ist voll kompatibel mit Swift.
Vor kurzem haben wir NULL-Zulässigkeit Anmerkung für einen unserer öffentlichen API-Methoden geändert:
von
- (void)setServer:(nullable ABCLocation *)location;
zu
- (void)setServer:(nonnull ABCLocation *)location;
, so Entwickler benötigen würde [ABCLocation default]
Instanz und Pass erstellen es zu neuer API.
Frage
nun uns betrifft, wie Entwickler zu erzwingen/notify ihre bestanden Code um unsere neue API zu ändern?
Wenn die API mit Swift verwendet wird, scheint es die Nullität recht gut zu behandeln, indem es einen Fehler auslöst.
Objective-C, erzeugt nur eine Warnung aber, wenn nil
übergeben wird, Xcode tut nichts, wenn die Entwickler eine der Methode nullable
Grundstück vorbeiführt.
Wie erzwingen wir Entwickler, ihre API zu ändern? Was sind die üblichen Praktiken hier?
UPD:
Wir verteilen den Rahmen als binäres, gebaut mit Veröffentlichung Konfiguration, wo Behauptungen ausgeschaltet sind.
UPD # 2:
Bisher haben wir die Realität akzeptiert haben, wenn unsere API von Objective-C verwendet wird. Wir haben jedoch ein "fail safe" -Verhalten implementiert: Wenn nil
übergeben wird, erstellt die Methode intern [ABCLocation default]
Instanz und übergibt sie implizit.
"Xcode tut nichts, wenn Entwickler der Methode eine Nullable-Eigenschaft übergibt." Etwas anderes ist falsch, Sie sollten Warnungen erhalten, wenn dies tatsächlich der Fall war. – Mike