2009-07-31 4 views
1

Was passiert, wenn ich ein automatisch freigegebenes Objekt freigebe? Es ist eine automatisch freigegebene UIButton, die ich veröffentlichen möchte und die einzige Möglichkeit, eine UIButton zu erstellen, ist die convinience-Methode buttonWithType :. Wird es wie ein normales Objekt aus dem Gedächtnis entlassen? Oder soll ich einfach den Autorespulepool darum kümmern lassen? Ich hätte es nicht automatisch freigegeben, wenn ich könnte.iPhone Entwicklung - Freigabe eines automatisch freigegebenen Objekts

Danke !!

Antwort

1

Sie sollten sich einfach den Autorelease-Pool darum kümmern. Sobald Sie Ihre Schaltfläche zu einer übergeordneten Ansicht hinzugefügt haben, behält diese Ansicht sie bei, und die automatisch freigegebene Kennung wird vom Autorelease-Pool übernommen.

Der einfachste Weg, um darüber nachzudenken, ist in Bezug auf Besitz - Sie "nicht" die Referenz, die Sie über eine bequeme Methode erhalten, so müssen Sie nicht die Mühe freigeben, es sei denn, Sie behalten es auch.

0

Sie dürfen nur ein Objekt freigeben, das Ihnen gehört. + buttonWithType: gibt ein Objekt im Besitz nicht zurück, also dürfen Sie es nicht freigeben.

Überprüfen Sie die Cocoa Object Ownership Rules.

Warum versuchen Sie hier ein automatisches Objekt zu vermeiden? Vermutlich erstellen Sie die Schaltfläche, weil Sie die Schaltfläche verwenden und in eine Ansichtshierarchie einfügen. Es gibt also keinen wirklichen Grund, das Löschen des Autorelease-Pools, der die Schaltfläche enthält, zu beschleunigen.