2017-03-03 75 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。

一个弃用警告正是让您有时间这样做的工具。

相关问题