私は私のプロジェクトでは、 'override func didReceiveMemoryWarning(){}'が必要ですか?
override func didReceiveMemoryWarning() {
にここでエラーがエラーを得た:方法はそれのスーパークラスのいずれかを上書きしません。
質問:
は、コードoverride func didReceiveMemoryWarning()
が私のプロジェクトにしておく必要がありますか?
私の悪い英語のために申し訳ありません。
私は私のプロジェクトでは、 'override func didReceiveMemoryWarning(){}'が必要ですか?
override func didReceiveMemoryWarning() {
にここでエラーがエラーを得た:方法はそれのスーパークラスのいずれかを上書きしません。
質問:
は、コードoverride func didReceiveMemoryWarning()
が私のプロジェクトにしておく必要がありますか?
私の悪い英語のために申し訳ありません。
いいえ、そうではありません。必要があるまで削除してください。
衝撃的です、私は知っています、それはテンプレートの中にあることが推奨されています。しかし、何年にもわたってiOSを開発してきた中で、実際には4〜5回(実際にはメモリが限られていたiPhone 3GSに戻ってきたものがほとんどです)に役立つものがありました。率直に言って、新しい開発者にとっては、そのレベルでのリソース使用率の最適化について心配する準備が整うまで、私はそれを残しておきます。私はそれが解決するよりも混乱を招くと思う。メモリ警告コードが確実に動作することを確認するためのテストも行わない限り、そこに置くべきではありません。
アレッサンドロが指摘しているように、この方法はUIViewController
サブクラスにのみ適用されます。 (他のタイプの場合は、UIApplicationDidReceiveMemoryWarningNotification
を見ることができます)。テンプレートの一部であるか、誰かがそれを持っているべきだと言われたので、ただそこに置いてはいけません。意味のあるメモリがない場合(そして正直なところ、View Controllerはめったにはならない)、オーバーライドを取り除くべきです。
実際に質問には[osx]というタグが付きます。 –
ええ、私はOS Xアプリケーションを作っています。しかし、それはthx働いた! – Sarcasm
@悲しみ、heh。これはOS Xにも存在しないので、削除したいと思うでしょう... –
Apple developer libraryはそれを言う:
Sent to the view controller when the app receives a memory warning.
Your app never calls this method directly. Instead, this method is called when the system determines that the amount of available memory is low.
You can override this method to release any additional memory used by your view controller. If you do, your implementation of this method must call the super implementation at some point.
おそらくあなたは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.
}
}
あなたはdidReceiveMemoryWarning()
を持っていない必要を行うが、あなたはです。
override
キーワードを使用しているため、ここでエラーが発生しています。
キーワードoverride
は、「このメソッドは、スーパークラス内で同じ名前(didReceiveMemoryWarning()
)のメソッドをオーバーライドします。
スーパークラスにdidReceiveMemoryWarning()
がない場合は、オーバーライドしていませんが、あなたはそうだと言います。それは誤りです。
メソッドをすべて一緒に削除するか、クラスをそのメソッドを実装するクラスのサブクラスにします。
View Controllerのサブクラスを編集してもよろしいですか? – Desdenova