2009-04-27 13 views
1

Ich arbeite derzeit an einer Anwendung, die mehrere UIView s in einem UIScrollView anzeigt. Diese UIScrollView ist innerhalb einer UIViewController.Unteransichten von UIScrollView und Speicherleck entfernen

In einer Schleife erstelle ich neue UIView s, autorelease sie und füge sie der Bildlaufansicht hinzu. Könnte das das Problem sein?

Wenn ich versuche, den View-Controller freizugeben, bleiben alle Unteransichten mit ihren Beschriftungen, Bildern usw. im Speicher.

Was wäre der beste Weg, um diese Objekte loszuwerden?

Antwort

1

Es ist unmöglich zu sagen, ohne etwas Code zu sehen. Veröffentlichen Sie einen Ausschnitt des Codes, den Sie für verdächtig halten. Stellen Sie sicher, dass Sie alle Regeln befolgen, die in der Memory Management Programming Guide for Cocoa festgelegt sind.

2

ich denke, das könnte sein, was los ist:

Wenn Sie eine UIView zu einem UIScrollView hinzufügen, die UIScrollView es behalten. Sie rufen auch die Autorelease in der UIView auf, sodass das Objekt jetzt von UIScrollView und NSAutoreleasePool beibehalten wird. Wenn Sie den viewController freigeben, wird der Retain-Count um eins verringert, aber die Objekte werden nicht freigegeben, bis Sie den Drain-Aufruf für Ihren aktuellen NSAutoreleasePool erhalten.

Vielleicht versuchen Sie nicht, die Objekte in der Schleife automatisch zu lösen. Fügen Sie sie einfach zu UIScrollView hinzu und geben Sie sie dann manuell frei. Auf diese Weise ist UIScrollView der alleinige Eigentümer dieser Objekte.

Verwandte Themen