2017-03-03 2 views
2

Zum Beispiel gibt es in iOS 10 UserNotifications Framework. Zuvor müssen Sie nur verwenden:Was passiert, wenn Sie veralteten Code in swift ausführen?

let settings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil) 
application.registerUserNotificationSettings(settings) 
application.registerForRemoteNotifications() 

(Ich lief den Code oben auf iOS 10 und nichts passierte).

Meine generische Frage ist: Würde laufende veraltete Syntax abstürzen die ganze Zeit, nur nichts tun (wie jetzt) ​​oder wie es behandelt ist unbekannt?

Ich frage nach einem besseren Debugging Verständnis.

+0

@pjs Aber in der Tat funktioniert Code, der UILocalNotification verwendet und gegen iOS 10 verknüpft ist, funktioniert _not_ nicht. – matt

+1

@pjs aber das hat nichts mit "dem Compiler" zu tun. – matt

Antwort

4

, wie es behandelt ist unbekannt

Im Grunde, das ist richtig. Es würde wahrscheinlich nicht abstürzen, aber es funktioniert auch nicht garantiert.

Im Fall der UILocalNotification-Welt zeigt die Erfahrung, dass Ihr Code nicht richtig funktioniert, wenn Sie mit iOS 10 verlinken. Sie müssen auf den neuen UNUserNotificationCenter-Code wechseln.

Aber das wird nicht durch Regel sondern durch Experimente bestimmt.

Die eine zuverlässige allgemeine Regel ist, dass, wenn etwas für die aktuelle iOS-Version veraltet ist, verwenden Sie es nicht. Genau das bedeutet Abwertung.

Wenn Sie möchten, dass Ihr Code mit iOS 10 verknüpft wird, aber unter iOS 10 und iOS 9 ausgeführt wird, müssen Sie möglicherweise zwei völlig unterschiedliche Code-Sätze einfügen, um die Swift-Syntax if #available() zu nutzen zu welchem ​​System wir eigentlich laufen. In diesem Fall müssten Sie dies tun, um lokale Benachrichtigungen zu verwalten. Aber das ist der Preis des Fortschritts. Apple (absichtlich?) Macht es Ihnen schwer, abwärtskompatiblen Code zu schreiben.

+0

@Rob Entschuldigung, dachte, dass das in meinen "zwei völlig verschiedenen Code-Sets" enthalten war. Ich schleiche es rein. – matt

1

Veraltet bedeutet, dass Apple es jederzeit in Zukunft entfernen kann. Es kann noch ein paar Jahre dauern, aber eines Tages wird es zusammenbrechen und du kannst nicht sagen, dass du nicht gewarnt wurdest. Wenn Sie neuen Code schreiben, warum beginnen Sie mit etwas, das bereits veraltet ist? Wenn dies in Ihrem vorhandenen Code enthalten ist, sollten Sie eine Aktualisierung auf die neue API in Erwägung ziehen.

Eine Verwarnungswarnung ist genau das Werkzeug, das Ihnen Zeit gab, dies zu tun.

Verwandte Themen