• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

super init will nicht mehr?

Westbär

Weißer Winterglockenapfel
Registriert
06.04.07
Beiträge
881
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ß
 

Peter Maurer

Pommerscher Krummstiel
Registriert
16.03.04
Beiträge
3.077
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.)
 

Westbär

Weißer Winterglockenapfel
Registriert
06.04.07
Beiträge
881
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?
 

Peter Maurer

Pommerscher Krummstiel
Registriert
16.03.04
Beiträge
3.077
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.)
 

Westbär

Weißer Winterglockenapfel
Registriert
06.04.07
Beiträge
881
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 :)
 

Peter Maurer

Pommerscher Krummstiel
Registriert
16.03.04
Beiträge
3.077
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.
 

Westbär

Weißer Winterglockenapfel
Registriert
06.04.07
Beiträge
881
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 :)
 
  • Like
Reaktionen: Peter Maurer