gpt4 book ai didi

ios - 在 swift 中将 AppDelegate 类声明为 'final' 是不好的做法吗?

转载 作者:搜寻专家 更新时间:2023-11-01 06:01:48 24 4
gpt4 key购买 nike

现在,我正在尝试使用 Git 中名为 Insomnia 的类来防止设备在充电时锁定。 project如果你好奇的话,就在这里。对于示例代码,它让我这样做:

final class AppDelegate: UIResponder, UIApplicationDelegate {
private let insomnia = Insomnia(mode: .whenCharging)
//app delegate code
}

如您所见,它让您将 AppDelegate 声明为 final,这样 insomnia 变量就不会被释放,这将停止它从工作。但是,我不确定,将我的 AppDelegate 声明为 final 是否是一种不好的做法?或者这会导致我的应用程序出现问题吗?如果这是不好的做法,是否有更好的方法来确保 insomnia 不被释放?

最佳答案

你说:

As you can see, it has you declare the AppDelegate as final so that the insomnia variable isn't deallocated ...

这不是 final 所做的。它只是说该类不能被子类化(这在应用程序委托(delegate)的情况下不太可能相关)。 final 关键字还允许进行一些优化(如果您有代码调用这些方法中的任何一个,它可以使用静态分派(dispatch)而不是动态分派(dispatch)),在这种情况下不太可能产生任何可观察到的效果。

最重要的是,您不必在此上下文中使用 final

“最佳实践”是在您需要的地方使用 final,即类确实不能或不应该被子类化的地方,或者您真正需要静态分派(dispatch)提供的性能差异的地方。


在回答您的问题是否是声明insomnia 的可接受位置时,是的(但不需要final)。 AppDelegate 在应用运行时不会被释放,我们通常会在此处放置“应用生命周期”相关代码。

关于ios - 在 swift 中将 AppDelegate 类声明为 'final' 是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47701222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com