我在这里收到错误
override func didReceiveMemoryWarning() {
错误:方法不会覆盖它的任何超类。
问题:
代码override func didReceiveMemoryWarning()
是否必须在我的项目中?
抱歉我的英语不好。
答案 0 :(得分:7)
不,你没有。删除它直到你需要它。
令人震惊,我知道,因为它是推荐的,它在模板中。但是在iOS开发的这些年里,我实际上只有四到五次有用的东西(其中大部分都是在iPhone 3GS时代,当时内存更加有限)。坦率地说,对于新开发人员,我只是将其搁置,直到您准备好担心在该级别优化资源利用率。我认为这会造成比它解决的更多混乱。你绝对不应该把它放在那里,除非你也进行测试以确保你的记忆警告代码有效。
正如Alessandro所说,此方法仅适用于UIViewController
子类。 (对于其他类型,您可以观察UIApplicationDidReceiveMemoryWarningNotification
。)但是您不应该只是将它留在那里,因为它是模板的一部分,或者因为有人告诉您应该拥有它。如果你没有任何有意义的内存要释放(老实说,查看控制器很少应该),那么你应该摆脱覆盖。
答案 1 :(得分:0)
当应用收到内存警告时发送给视图控制器。
您的应用从不直接调用此方法。相反,这种方法是 当系统确定可用内存量时调用 很低。
您可以覆盖此方法以释放所使用的任何其他内存 你的视图控制器。如果你这样做,你实现这个方法 必须在某个时候调用超级实现。
可能您尝试将此方法设置为view controller不同的类类型。
正确:
class MyClass: UIViewController {
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
这是错误:
class MySwitch: UIControl {
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
答案 2 :(得分:0)
您在此处收到错误,因为您使用的是didReceiveMemoryWarning()
关键字。
override
关键字声明“此方法会覆盖超类中具有相同名称(override
)的方法。”
但如果超类没有didReceiveMemoryWarning()
,那么你就不会覆盖它,但你说你是。那是一个错误。
将所有方法一起删除,或者使您的类成为实现该方法的类的子类。