ios - AppDelegate 的 'downcasting' 会失败吗?

标签 ios swift cocoa-touch

在使用 CoreData 时,我们需要访问可通过 AppDelegate 访问的共享存储。要获取对 AppDelegate 的引用,我们可以通过执行以下操作来获取它:

guard let appDelegate = UIApplication.shared.delegate as? AppDelegate 
else {
        return
    }

为什么向下转型到 Appdelegate 时我们必须如此安全?沮丧是否会因为某种原因而失败?如果是,为什么?

我环顾四周,找不到我们为什么要写这段代码的原因,想知道我为什么要写这些东西会有帮助!

最佳答案

AppDelegate 的可选向下转换(实际上是代表应用程序委托(delegate)类的类)永远不会失败,因为如果缺少应用程序委托(delegate)类,应用程序甚至不会启动。

您可以 100% 安全地编写

let appDelegate = UIApplication.shared.delegate as! AppDelegate

许多人都患有感叹号恐惧症 😉 并争辩说所有感叹号都是邪恶的,您总是必须保护任何可选的。这是错误的。世界不仅是黑白的。在许多情况下,强制解包可选是安全的,就像在这种特殊情况下一样。

关于ios - AppDelegate 的 'downcasting' 会失败吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44153454/

相关文章:

ios - 子类中未调用 Swift 3 ObjC 可选协议(protocol)方法

ios - 按下完成后停止 AV 播放器

ios - 在 swift 中创建图像数组并连接声音

swift - 方便的可失败初始化器分配 self

ios - 如何在Swift中的multipartFormData中添加2个以上文件参数

Objective-C:不使用委托(delegate)方法的异步/后台 POST?

ios - SpriteKit - 更改纹理后 FPS 下降

ios - 不能使用谓词来比较 Magical Record 中的日期

swift - 在选项卡 View Controller 中跨 View Controller 访问 NSCache

iphone - 如何使用 UIBezierPath 绘制一条跟随触摸事件的线?