2017-03-03 54 views
2

例如在iOS 10中有UserNotifications框架。在此之前,你只需要使用:當您在swift中運行棄用代碼時會發生什麼?

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

(我在iOS 10上運行上面的代碼,沒有發生任何事情)。

我的一般問題是:會一直運行不推薦的語法崩潰,什麼都不做(如現在),或者它如何對待未知?

我要求得到更好的調試瞭解

+0

@pjs但事實上,使用UILocalNotification並鏈接到iOS 10的代碼確實不工作。 – matt

+1

@pjs但這與「編譯器」無關。 – matt

回答

4

它怎樣對待不明

基本上,這是正確的。它可能不會崩潰,但也不能保證可以正常工作。

在UILocalNotification世界的情況下,經驗表明,如果您鏈​​接到iOS 10,您的代碼將無法正常工作。您必須必須切換到新的UNUserNotificationCenter代碼。

但這不是由規則決定的,而是由實驗決定的。

一個可靠的通用規則是,如果對於當前的iOS版本不推薦使用某些內容,請不要使用它。這正是貶值的含義。當然,如果你想讓你的代碼與iOS 10鏈接,但是在iOS 10和iOS 9上運行,也就是說,你可能需要包含兩組完全不同的代碼,利用Swift的if #available()語法來響應到我們實際運行的系統。在這種特殊情況下,您必須這樣做才能管理本地通知。但那是進步的代價。蘋果(故意?)讓你很難寫出向後兼容的代碼。

+0

@Rob對不起,以爲這是我的「兩個完全不同的代碼集」隱含的。我會潛入那裏。 – matt

1

不贊成意味着Apple可能會在將來的任何時候將其刪除。它可能會工作幾年,但有一天它會崩潰,你不能說你沒有受到警告。如果你編寫新的代碼,爲什麼從已經過時的東西開始?如果這存在於您現有的代碼中,請考慮在有機會時將其更新爲新的API。

一個棄用警告正是讓您有時間這樣做的工具。

相關問題