2016-05-16 3 views

Antwort

5

Nein, tun Sie nicht. Löschen Sie es, bis Sie es brauchen.

Schockierend, ich weiß, weil es empfohlen wird und es in der Vorlage ist. Aber in all den Jahren, in denen ich iOS entwickelt hatte, hatte ich eigentlich nur etwas Nützliches dort, vielleicht vier oder fünf Mal (und die meisten waren wieder in den iPhone 3GS-Tagen, als die Speicherkapazität begrenzt war). Ehrlich gesagt, für neue Entwickler würde ich es einfach weglassen, bis Sie sich über die Optimierung der Ressourcennutzung auf dieser Ebene Gedanken machen können. Ich denke, es schafft mehr Verwirrung, als es löst. Sie sollten es definitiv nicht dort eingeben, wenn Sie nicht auch Tests durchführen, um sicherzustellen, dass Ihr Speicherwarncode funktioniert. Wie Alessandro bemerkt, ist diese Methode nur für die Unterklassen UIViewController anwendbar. (Für andere Typen können Sie UIApplicationDidReceiveMemoryWarningNotification beobachten.) Aber Sie sollten es nicht einfach dort lassen, weil es Teil der Vorlage ist oder weil jemand Ihnen gesagt hat, dass Sie es haben sollten. Wenn Sie keinen sinnvollen Speicher zum Freigeben haben (und ehrlich gesagt, sollten Sie die View Controller selten sehen), dann sollten Sie den Override loswerden.

+1

Eigentlich ist die Frage getaggt [osx]. –

+0

Ja, ich mache eine OS X-Anwendung. Aber es hat gut funktioniert! – Sarcasm

+0

@Sarcasm, heh. Das gibt es nicht einmal in OS X, also ja, du würdest es löschen wollen ... –

0

Apple developer library heißt es:

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.

Wahrscheinlich Sie versuchen, diese Methode in einer Klasse-Typ durch eine view controller anders einzustellen.

Dies ist richtig:

class MyClass: UIViewController {  
    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 

Dies ist ein Fehler:

class MySwitch: UIControl { 
    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 

enter image description here

0

Sie nicht NotwendigkeitdidReceiveMemoryWarning() zu haben, aber Sie sollte.

Sie erhalten hier einen Fehler, weil Sie das Schlüsselwort override verwenden.

Das Schlüsselwort override besagt, dass "diese Methode die Methode mit dem gleichen Namen (didReceiveMemoryWarning()) in der Oberklasse überschreibt."

Aber wenn die Oberklasse nicht didReceiveMemoryWarning() hat, dann überschreibst du es nicht, aber du sagst du bist. Das ist ein Fehler.

Entweder entfernen Sie die Methode alle zusammen oder machen Sie Ihre Klasse eine Unterklasse einer Klasse, die diese Methode implementiert.

Verwandte Themen