在swift中运行不推荐使用的代码时会发生什么?

在swift中运行不推荐使用的代码时会发生什么?,swift,syntax,deprecated,Swift,Syntax,Deprecated,例如,在iOS 10中有UserNotificationsframework。在此之前,您只需使用: let settings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil) application.registerUserNotificationSettings(settings) application.registerForRemoteNotifications() (我在i

例如,在iOS 10中有
UserNotifications
framework。在此之前,您只需使用:

let settings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
 application.registerUserNotificationSettings(settings)
 application.registerForRemoteNotifications()
(我在iOS 10上运行了上面的代码,但什么也没发生)

我的一般问题是:运行不推荐的语法是否会一直崩溃,只是什么都不做(就像现在一样),或者它如何处理是未知的


我要求更好地理解调试

不推荐意味着苹果可能在将来的任何时候删除它。它可能还要工作几年,但总有一天它会崩溃,你不能说你没有得到警告。如果您正在编写新代码,为什么要从已经过时的代码开始呢?如果这是在您现有的代码中,请考虑在有机会时将其更新到新API。 弃用警告正是让您有时间这样做的工具

它是如何治疗的还不得而知

基本上,这是正确的。它可能不会崩溃,但也不能保证能正常工作

在UILocalNotification世界中,经验表明,如果链接到IOS10,代码将无法正常工作。您必须切换到新的UNUserNotificationCenter代码

但这不是由规则决定的,而是由实验决定的

一条可靠的一般规则是,如果当前的iOS版本不推荐使用某些内容,请不要使用它。这正是反对的意思


当然,如果您希望您的代码链接到iOS 10,但同时在iOS 10和iOS 9上运行,那么您可能需要包含两组完全不同的代码,利用Swift的
if#available()
语法响应我们实际运行的系统。在这种情况下,您必须这样做才能管理本地通知。但这是进步的代价。Apple(故意?)让您很难编写向后兼容的代码。

@pjs但事实上,使用UILocalNotification并链接到iOS 10的代码不起作用。@pjs但这与“编译器”无关。@Rob抱歉,我认为这在“两套完全不同的代码”中是隐含的。我会偷偷带进去的。