Sollte -dealloc etwas anderes tun, als Speicher freizugeben?

8

Ich habe eine iPhone App bei der Arbeit geerbt und ich bin neu bei Objective-C, daher habe ich mich noch nicht orientiert. Ich stieß auf ähnlichen Code:

%Vor%

Ich weiß, dass das in anderen Sprachen verpönt ist. Mein Spinnensinn wird verrückt, wenn er diesen Code betrachtet.

Ist das ein gemeinsames Ziel-C-Idiom? Oder habe ich eine beschissene Codebasis, um es zu reparieren?

    
ageektrapped 23.07.2010, 13:42
quelle

2 Antworten

7

Sie sollten den UI-Code nicht in ein -dealloc einfügen. Allgemeine Faustregel: Verwenden Sie -dealloc nur, um das zu bereinigen, was Sie getan haben: Objekte freigeben, Beobachter entfernen usw.

Überlegen Sie, was passieren würde, wenn dieses Objekt in einem anderen Thread als dem Hauptthread leben würde ... jetzt würde der UI-Code auf dem Nicht-Hauptthread laufen, was eine schlechte Sache ist.

    
Darryl H. Thomas 23.07.2010, 13:57
quelle
0

Sie können dies aus Debugging-Gründen tun. Aber ich glaube nicht, dass du jemals so etwas tun solltest! Dies bedeutet, dass ein Dialog aufgerufen wird, wenn ein Objekt freigegeben wird. Wenn Sie also einen Mechanismus benötigen, um einen Dialog zu einem bestimmten Zeitpunkt anzuzeigen, müssen Sie ihn nicht von einem Objekt abhängig machen. In der Dealloc-Methode sollten Sie wirklich nur alle Objekte freigeben, die vom freigegebenen Objekt beibehalten wurden. Und nicht irgendwelche ausgefallenen Anwendungsfunktionen.

    
V1ru8 23.07.2010 13:53
quelle

Tags und Links