ARC, Speicherverwaltung etc.

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • ARC, Speicherverwaltung etc.

    Abend Leute,

    zugegeben, als ich angefangen hab objective c zu lernen, kam gerade ARC groß raus und so mit hab ich mich nie richtig mit Speicherverwaltung auseinander gesetzt *Ich Duuummkoopp*. Naja nun hab ich den Salat. Ich habe gerade festgestellt, dass der Speicher meiner App nie frei gegeben wird. Also hab ich mal in jeder dealloc Methode ein breakpoint gesetzt. Und siehe da, meine App kommt nicht in die Methode rein. Nach ein bisschen googlen hab ich gesehen, dass die Leute den RootViewController im viewDidAppear auf self setzten. Also hab ich das in jedem ViewController gemacht und nun kommt er auch in jede dealloc Methode rein AUßER in eine. Wenn ich in dem besagten ViewController gehe und wieder raus gehe bekomm ich folgene Meldung: "Presenting view controllers on detached view controllers is discouraged". Und wie gesagt, die dealloc wird auch nicht ausgeführt trotz setzten des RootViewController.
    Oh man, dass hängt mir jetzt alles hinterher :(.
    Hoffentlich habt ihr ein paar Tipps für mich :)
    In der dealloc Methode setzt ich jede Property auf nil, stimmt das überhaupt? Macht man das so?

    Ich freu mich auf jede Antwort

    Liebe grüße
    Yannick
  • Wenn Du ARC verstehen willst, solltest Du etwas über MRC lesen: developer.apple.com/library/io…ple_ref/doc/uid/10000011i

    yannig7 schrieb:

    In der dealloc Methode setzt ich jede Property auf nil, stimmt das überhaupt?

    Unter MRC schon unter ARC ist das nicht notwendig.

    Wenn Du Dich auf diesem Level dem Thema nähern willst, wirst Du dafür lange brauchen. Welche Fach-Literatur verwendest Du?
    „Meine Komplikation hatte eine Komplikation.“
  • Hi danke schonmal für deine Antwort. Hab damals "apps entwickeln für iphone und ipad" gelesem. Da kam Speicherverwaltung eigentlich recht zum Anfang, wenn man von Java kommt entmudigt sowas schonmal. Stimmt denn der Ansatz mit dem RootViewController?
  • Michael schrieb:

    Der RootViewController spielt in dem Thema Speicherverwaltung keine besondere Rolle.

    Mich hat es nur gewundert, warum er mit dem setzten des RootViewControllers in die dealloc Methode kommt und ohne nicht.
    Kann es vllt daran liegen, das ich die Segue eventuell nicht richtig setzte? Ich benutzte außschießlich Model Segues (vor wie zurück).
  • Hast ja Recht... Naja, hab nun ein bisschen gegoogelt und ein Tutorial gemacht und glaub, dass es nun Funktioniert :) die Zurückbutton haben nun kein Segue mehr sonderen verschwinden mit [self dismissViewControllerAnimated:YES completion:nil];. Kommt nun auch in jede dealloc Methode und Speicher wird frei gegeben. Bei dem einen ViewController hatte ich mein delegate auf retain und nicht weak, daher wurde dort auch nie der Speicher frei gegeben :)
  • Das hängt davon ab, wie man am besten lernt. Ich bin auch eher der Typ Autodidakt. Ich hab natürlich Bücher zu Einstieg gelesen; das Problem ist, das viele Bücher/Dokumentationen zu komplex sind, die Themen zu erfassen. Je nach dem wie gut man ist, versteht man mal mehr, mal weniger davon. Das meiste behält man oft nicht, weil man es noch nicht in einen sinnvollen Kontext stellen kann. Wenn er jetzt sich so ein paar Lösungen anschaut, sie anpasst und das immer wieder, dann lernt er genug, dass er die Dokumentation wirklich versteht und sie dann auch wirklich etwas bringt. Zumindest hab ich die Erfahrung oft gemacht.
  • Auch ein Autodiadakt muss sich mit Grundlagen auseinandersetzen. Sicherlich kann man vieles über Tutorien oder fremden Code lernen. Du kannst Dir aber auf diesem Weg nur Regeln erarbeiten, wenn Du Dich auch damit beschäftigst, und diese Regeln findest Du sicherlich in keinem Tutorial.

    Übrigens reden wir hier von ca. einer Seite Stoff.
    „Meine Komplikation hatte eine Komplikation.“