Wurde mit iOS 7 Änderungen bei ARC gemacht?

  • Wurde mit iOS 7 Änderungen bei ARC gemacht?

    Hallo,
    ich habe heute meine iOS 7 Version unter Instruments angeschaut.
    Nun habe ich festgestellt, dass wenn ich ein modales View öffne der Speicherbedarf nach oben geht. Für mich nichts neues.
    Wenn ich nun dieses modale View schließe, bleibt aber der Speicherbedarf auf den gleichen Level.
    Öffne ich wieder das modale View geht wieder der Speicherbedarf nach oben. Beim Schließen bleibt er wieder auf den gleichen Level.

    Unter Xcode 4.6 mit iOS 6 konnte ich bei der gleichen App aber immer das gewünschte Speicherverhalten sehen.
    Wenn ich das modale View geöffnet habe, ging der Speicherbedarf nach oben und beim Schließen ging er wieder zurück.

    Ich hoffe diese Informationen reichen euch, vielleicht wisst ihr ja über eine Änderung bei ARC von der ich nichts weis.
    Ich habe bei der App nur das Storyboard für das neue iOS 7 Design angepasst.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Bayer ()

  • Wenn das modale View erscheint wir das erzeugt:

    # Address Category Timestamp Live Size Responsible Library Responsible Caller
    0 0xcb0a400 Malloc 39,50 KB 00:14.705.687 • 39,50 KB UIKit -[UISectionRowData refreshWithSection:tableView:tableViewRowData: ]

    Und wenn es wieder verschwindet, bleiben die Objekte(?) immer noch im Speicher.
  • ARC hält nichts vor. Es kann freigeben, wenn keine Referenz mehr vorhanden ist. Dann ist aber das Objekt auch nicht mehr erreichbar un vorhalten kann nicht zielführend sein.

    So etwas geht nur bei benannten Ressourcen, wovon ARC nichts weiß. Man implementiert das daher auf höheren Ebenen.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • macmoonshine schrieb:

    Es gibt und gab unter iOS keinen Garbage Collector.
    ja ja... MS hat mich ein wenig versaut. aber halte ich an sich für ein guten Ansatz, im Hintergrund prüfen ob nicht ein Objekt/ (oder irgendeine andere Struktur im Speicher) immer wieder initialisiert wird und das dann dennoch "vorhalten" wenn es wieder benötigt wird, obwohl kein Zeiger mehr darauf zeigt. Wenn der zugewiesene Speicher dann doch knapp wird, schmeisst man die temporären Daten einfach raus.
  • Bayer schrieb:

    Aber Garbage Collector braucht doch in Releation zu der App richtig viel Ressourcen?

    In welcher Relation zur App? Die Müllsammler brauchen in der Regel viel Zeit. Wenn der Speicher voll läuft, kannst Du die Müllsammler anschubsen und schnarch... ;) Da unter iOS aber jeder dafür sorgen sollte, seinen Müll selber wegzuräumen, brauchst Du da glücklicherweise auch keinen Müllsammler...
    „Meine Komplikation hatte eine Komplikation.“