Swift 我需要';重写func didReceiveMemoryWarning(){}';在我的项目中?

Swift 我需要';重写func didReceiveMemoryWarning(){}';在我的项目中?,swift,macos,Swift,Macos,我在这里遇到一个错误:override func didReceiveMemoryWarning(){ 错误:方法不重写其任何超类 问题:代码覆盖func didReceiveMemoryWarning()必须在我的项目中吗?说: 当应用程序收到内存警告时发送到视图控制器 你的应用程序从不直接调用此方法。相反,此方法是 当系统确定可用内存量 价格很低 您可以重写此方法以释放所使用的任何其他内存 你的视图控制器。如果你这样做,你的这个方法的实现 必须在某个时候调用超级实现 可能您尝试在不同的类类型

我在这里遇到一个错误:
override func didReceiveMemoryWarning(){

错误:方法不重写其任何超类

问题:代码
覆盖func didReceiveMemoryWarning()
必须在我的项目中吗?

说:

当应用程序收到内存警告时发送到视图控制器

你的应用程序从不直接调用此方法。相反,此方法是 当系统确定可用内存量 价格很低

您可以重写此方法以释放所使用的任何其他内存 你的视图控制器。如果你这样做,你的这个方法的实现 必须在某个时候调用超级实现

可能您尝试在不同的类类型中设置此方法

这是正确的:

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.
    }
}
这是一个错误

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.
    }
}
上面说:

当应用程序收到内存警告时发送到视图控制器

你的应用程序从不直接调用此方法。相反,此方法是 当系统确定可用内存量 价格很低

您可以重写此方法以释放所使用的任何其他内存 你的视图控制器。如果你这样做,你的这个方法的实现 必须在某个时候调用超级实现

可能您尝试在不同的类类型中设置此方法

这是正确的

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.
    }
}
这是一个错误

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.
    }
}

您不需要让
didReceiveMemoryWarning()
,但您应该这样做

此处出现错误,因为您使用了
override
关键字

override
关键字声明“此方法覆盖超类中具有相同名称(
didReceiveMemoryWarning()
)的方法。”

但是如果超类没有didReceiveMemoryWarning(),那么您并没有覆盖它,而是说您覆盖了。这是一个错误

要么一起删除该方法,要么使您的类成为实现该方法的类的子类。

您不需要使用
didReceiveMemoryWarning()
,但应该这样做

此处出现错误,因为您使用了
override
关键字

override
关键字声明“此方法覆盖超类中具有相同名称(
didReceiveMemoryWarning()
)的方法。”

但是如果超类没有didReceiveMemoryWarning(),那么您并没有覆盖它,而是说您覆盖了。这是一个错误


要么一起删除该方法,要么使您的类成为实现该方法的类的子类。

不,您不需要。请删除它,直到您需要它为止

令人震惊的是,我知道,因为它是推荐的,并且在模板中。但在我多年的iOS开发过程中,我实际上只有四到五次有用的东西放在那里(其中大多数都是在内存更有限的iPhone3GS时代).坦率地说,对于新开发人员,在您准备好在该级别上优化资源利用率之前,我会将其忽略。我认为这会造成比解决问题更多的混乱。除非您还执行测试以确保内存警告代码正常工作,否则您绝对不应该将其放入其中


正如Alessandro所指出的,此方法仅适用于
UIViewController
子类。(对于其他类型,您可以观察
UIApplicationIDReceiveMemoryWarningNotification
)但你不应该仅仅因为它是模板的一部分或者因为有人告诉你应该拥有它而把它留在那里。如果你没有任何有意义的内存可以释放(老实说,视图控制器很少应该释放),那么你应该摆脱覆盖。

不,你没有。删除它,直到你需要它为止

令人震惊的是,我知道,因为它是推荐的,并且在模板中。但在我多年的iOS开发过程中,我实际上只有四到五次有用的东西放在那里(其中大多数都是在内存更有限的iPhone3GS时代).坦率地说,对于新开发人员,在您准备好在该级别上优化资源利用率之前,我会将其忽略。我认为这会造成比解决问题更多的混乱。除非您还执行测试以确保内存警告代码正常工作,否则您绝对不应该将其放入其中


正如Alessandro所指出的,此方法仅适用于
UIViewController
子类。(对于其他类型,您可以观察
UIApplicationIDReceiveMemoryWarningNotification
)但是你不应该仅仅因为它是模板的一部分或者因为有人告诉你应该拥有它就把它留在那里。如果你没有任何有意义的内存可以释放(老实说,视图控制器很少应该),然后你应该去掉覆盖。

你确定你在编辑视图控制器子类吗?你确定你在编辑视图控制器子类吗?实际上问题被标记为[osx]。@讽刺,嘿。这在OS X中甚至不存在,所以是的,你想删除它…实际上问题被标记为[osx]@Sarcasm,嘿。这在OSX中根本不存在,所以是的,你想删除它…