In einer Anwendung (OS X 10.6.7) habe ich eine NSWindowController
Unterklasse, die initialisiert wird mit -[NSWindowController initWithWindow:]
-d.h., ich habe das Fenster bereits im Code erstellt; ich lade es nicht aus einer Nib.
Normalerweise beziehe ich mich auf das Fenster in meinem NSWindowController
Unterklassen mit [self window]
. Aber in diesem Fall, jedes Mal wenn ich [self window]
Das Fenster wird zurückgehalten, so dass ich am Ende ziemlich undicht bin.
Ist dieses Verhalten beabsichtigt? Im Moment habe ich es umgangen, indem ich das Fenster einfach in einer Instanzvariablen in der init
Methode und niemals das Senden von [self window]
.
Ich bin mir ziemlich sicher, dass dies nicht der Fall ist, weil NSWindowController
versucht, das Fenster zu laden: -loadWindow
behält das Fenster nicht bei und -isWindowLoaded
gibt zurück. YES
:
(gdb) set $window = (id)[self window]
Current language: auto; currently objective-c
(gdb) p (int)[$window retainCount]
$1 = 3
(gdb) p (BOOL)[self isWindowLoaded]
$2 = 1 '\001'
(gdb) call (void)[self loadWindow]
(gdb) p (int)[$window retainCount]
$3 = 3
(gdb) p (int)[[self window] retainCount]
$4 = 4
(gdb) p (int)[[self window] retainCount]
$5 = 5