1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

super init will nicht mehr?

Dieses Thema im Forum "OS X-Developer" wurde erstellt von Westbär, 08.03.08.

  1. Westbär

    Westbär Weißer Winterglockenapfel

    Dabei seit:
    06.04.07
    Beiträge:
    882
    Huhu
    Ich hab heute mal versucht ein kleines Cocoa Programm zu schreiben. Nun soweit funktioniert alles gut, ich hab Buttons gemacht und mit einem NSObject verbunden.
    Nun kommt mein Problem, wenn jetzt connect auf false steht, sollen die Buttons disabled sein. Hab ich mir gedacht, ich mach das mit Outlets. Also einmal Outlets definiert und mit den Buttons verlinkt. Eine kleine init funktion geschrieben und Build & Go. Leider (laut GDB) hängt die Application ab [super init] in der Funktion init.

    ChannelController.m: http://westbaer.pastebin.com/m7ef0a08e
    ChannelController.h: http://westbaer.pastebin.com/m4ea08dd5

    Ich hoffe ihr könnt mir helfen,
    Gruß
     
  2. Peter Maurer

    Peter Maurer Carmeliter-Renette

    Dabei seit:
    16.03.04
    Beiträge:
    3.274
    Das heisst, es ging, bevor Du die Outlets definiert hast? Oder hast Du gleichzeitig noch was anderes veraendert? (Fragt sich, ob der Hund tatsaechlich im ChannelController begraben ist.)
     
  3. Westbär

    Westbär Weißer Winterglockenapfel

    Dabei seit:
    06.04.07
    Beiträge:
    882
    Bevor ich die Outlets gemacht habe, habe ich noch in prevChan & nextChan ein NSBeep() eingegeben um zusehen obs funktioniert und das tat es auch. Und auch wenn ich init auskommentiere funktioniert es.

    Aber ich brauch ja wohl init, weil sonst wird checkController (was noch nicht aufgerufen wird, weder vorher noch jetzt) am start nicht ausgeführt, oder?
     
  4. Peter Maurer

    Peter Maurer Carmeliter-Renette

    Dabei seit:
    16.03.04
    Beiträge:
    3.274
    Soweit ich sehe, setzt Du nur eine int-Variable auf "false", also 0. Und das ist sogar ueberfluessig, weil NSObject das automatisch fuer Dich macht. (Bitte keine Diskussionen ueber Programmierstil jetzt. :D)

    Was passiert denn, wenn Du nur die "connect = false;"-Zeile auskommentierst? Oder versuch' wahlweise mal diesen hier:

    Code:
    - (id) init {
            self = [super init];
            if (self) {
                    connect = false;
            }
            return self;
    }
    Vielleicht ist self ja nil, d.h., vielleicht gibt [super init] aus einem in Deinem Code-Schnipsel nicht ersichtlichen Grund nil zurueck. Und dann waeren Probleme wenig ueberraschend. (Merke: So eine Ueberpruefung ist immer eine gute Idee.)

    (Uebrigens kommt das Wort "false", das -- wenn ich mich recht erinnere -- traditionell mit dem Boolean-Typ verheiratet ist, in Cocoa eigentlich nicht vor. BOOLs setzt man eher auf NO, wie Du es auch an anderer Stelle tust. Und eine int-Variable wuerd' ich explizit auf 0 oder eine Eigenbau-Null-Konstante setzen.)
     
  5. Westbär

    Westbär Weißer Winterglockenapfel

    Dabei seit:
    06.04.07
    Beiträge:
    882
    Auch wenn ich jetzt das connect auskommentieren bleibt der Fehler.
    Es bleibt bei super init stehen. Aber nun wirft auch der Debugger was nettes raus: "GDB: Stopped at breakpoint 1 (hit count: 1) - '-checkConnect - Line 4.

    Die Meldung kommt jedoch auch, wenn ich alles was mit checkConnect zutun hat, auskommentiere.

    Und connect wird jetzt auf 0 gesetzt :)
     
  6. Peter Maurer

    Peter Maurer Carmeliter-Renette

    Dabei seit:
    16.03.04
    Beiträge:
    3.274
    Ich trau' mich mal, nach dem Offensichtlichen zu fragen: Da ist aber nicht zufaellig ein Breakpoint gesetzt? Diese blauen Pfeilchen entstehen auch gerne mal aus Versehen, wenn man in die Spalte links neben dem Quellcode klickt.
     
  7. Westbär

    Westbär Weißer Winterglockenapfel

    Dabei seit:
    06.04.07
    Beiträge:
    882
    Mein Gott, ich könnte mich schon wieder Ohrfeigen. Genau daran lags, Breakpoint aus der Spalte raus, Build & Go, funktioniert.

    Vielen, Vielen, Vielen Dank Peter :)
     
    Peter Maurer gefällt das.

Diese Seite empfehlen