当您 运行 弃用 swift 中的代码时会发生什么?
What happens when you run deprecated code in swift?
例如 iOS 10 中有 UserNotifications
框架。在此之前,您只需使用:
let settings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
application.registerUserNotificationSettings(settings)
application.registerForRemoteNotifications()
(我 运行 上面的代码在 iOS 10 上并没有发生任何事情)。
我的一般性问题是:运行 不推荐使用的语法是否会一直崩溃,只是什么也不做(就像现在一样)或者它如何处理是未知的?
我要求获得更好的调试理解。
已弃用意味着 Apple 可能会在将来随时删除它。它可能会再工作几年,但总有一天它会崩溃,你不能说你没有被警告过。如果您正在编写新代码,为什么要从已经过时的代码开始?如果这在您现有的代码中,请考虑在有机会时将其更新为新的 API。
弃用警告正是让您有时间执行此操作的工具。
how it treats is unknown
基本上是这样。它可能不会崩溃,但也不能保证能正常工作。
对于 UILocalNotification 世界,经验表明,如果您 link 反对 iOS 10,您的代码将无法正常工作。您必须切换到新的 UNUserNotificationCenter 代码。
但这不是由规则决定的,而是通过实验决定的。
一个可靠的一般规则是,如果当前 iOS 版本已弃用某些内容,请不要使用它。这正是弃用的意思。
当然,如果您希望您的代码针对 iOS 10 link 但针对 iOS 10 和 iOS 9 运行,比如说,您可能必须包含两组完全不同的代码,利用 Swift 的 if #available()
语法来响应我们实际 运行 所处的系统。在这种特殊情况下,您必须这样做才能管理本地通知。但这是进步的代价。 Apple(故意?)让您很难编写向后兼容的代码。
弃用通常意味着:
- 有更新的 API 可供使用。
- 较新的 API cooler/better/more 高效并为您提供更精细的控制。
- 十分之九,这并不意味着已弃用的 API 将立即停止工作,正如 Matt 所说:不再支持它,移动代码库更安全更新 API.
例如 iOS 10 中有 UserNotifications
框架。在此之前,您只需使用:
let settings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
application.registerUserNotificationSettings(settings)
application.registerForRemoteNotifications()
(我 运行 上面的代码在 iOS 10 上并没有发生任何事情)。
我的一般性问题是:运行 不推荐使用的语法是否会一直崩溃,只是什么也不做(就像现在一样)或者它如何处理是未知的?
我要求获得更好的调试理解。
已弃用意味着 Apple 可能会在将来随时删除它。它可能会再工作几年,但总有一天它会崩溃,你不能说你没有被警告过。如果您正在编写新代码,为什么要从已经过时的代码开始?如果这在您现有的代码中,请考虑在有机会时将其更新为新的 API。
弃用警告正是让您有时间执行此操作的工具。
how it treats is unknown
基本上是这样。它可能不会崩溃,但也不能保证能正常工作。
对于 UILocalNotification 世界,经验表明,如果您 link 反对 iOS 10,您的代码将无法正常工作。您必须切换到新的 UNUserNotificationCenter 代码。
但这不是由规则决定的,而是通过实验决定的。
一个可靠的一般规则是,如果当前 iOS 版本已弃用某些内容,请不要使用它。这正是弃用的意思。
当然,如果您希望您的代码针对 iOS 10 link 但针对 iOS 10 和 iOS 9 运行,比如说,您可能必须包含两组完全不同的代码,利用 Swift 的 if #available()
语法来响应我们实际 运行 所处的系统。在这种特殊情况下,您必须这样做才能管理本地通知。但这是进步的代价。 Apple(故意?)让您很难编写向后兼容的代码。
弃用通常意味着:
- 有更新的 API 可供使用。
- 较新的 API cooler/better/more 高效并为您提供更精细的控制。
- 十分之九,这并不意味着已弃用的 API 将立即停止工作,正如 Matt 所说:不再支持它,移动代码库更安全更新 API.