例如在iOS 10中有UserNotifications
框架。在此之前,您只需使用:
let settings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
application.registerUserNotificationSettings(settings)
application.registerForRemoteNotifications()
(我在iOS 10上运行了上面的代码,但没有发生任何事情。)
我的一般性问题是:是否会一直运行已弃用的语法崩溃,什么都不做(现在如此)或它的处理方式未知?
我要求更好地调试理解。
答案 0 :(得分:4)
它如何对待未知
基本上,这是对的。它可能不会崩溃,但它也不能保证工作。
对于UILocalNotification世界,经验表明,如果您链接到iOS 10,您的代码将无法正常工作。您必须切换到新的UNUserNotificationCenter代码。
但这不是通过规则而是通过实验来决定的。
一个可靠的一般规则是,如果当前iOS版本不推荐使用某些内容,请不要使用它。这正是折旧意味着什么。
当然,如果您希望您的代码链接到iOS 10,但要在iOS 10和iOS 9上运行,比如说,您可能必须包含两组完全不同的代码,利用Swift的if #available()
语法来响应我们实际运行的系统。在这种特殊情况下,您必须这样做才能管理本地通知。但那是进步的代价。 Apple(故意?)使您难以编写向后兼容的代码。
答案 1 :(得分:1)
弃用意味着Apple可能会在将来随时将其删除。它可能会工作几年,但有一天它会崩溃,你不能说你没有被警告过。如果您正在编写新代码,为什么要从已经过时的东西开始?如果这在您现有的代码中,请考虑在有机会时将其更新为新的API。
弃用警告正是让您有时间执行此操作的工具。