diff --git a/Source/NSDrawer.m b/Source/NSDrawer.m index 3c0387edf..1e5dabcb8 100644 --- a/Source/NSDrawer.m +++ b/Source/NSDrawer.m @@ -72,6 +72,12 @@ static NSNotificationCenter *nc = nil; { RELEASE(_contentView); + if (_delegate != nil) + { + [nc removeObserver: _delegate name: nil object: self]; + _delegate = nil; + } + [super dealloc]; } diff --git a/Source/NSMatrix.m b/Source/NSMatrix.m index 154ec4182..264fd4bc6 100644 --- a/Source/NSMatrix.m +++ b/Source/NSMatrix.m @@ -319,6 +319,13 @@ static SEL getSel; [_cellPrototype release]; [_backgroundColor release]; [_cellBackgroundColor release]; + + if (_delegate != nil) + { + [nc removeObserver: _delegate name: nil object: self]; + _delegate = nil; + } + [super dealloc]; } diff --git a/Source/NSTableView.m b/Source/NSTableView.m index ef2250a6c..f098874b4 100644 --- a/Source/NSTableView.m +++ b/Source/NSTableView.m @@ -2868,6 +2868,11 @@ _isCellEditable (id delegate, NSArray *tableColumns, { NSZoneFree (NSDefaultMallocZone (), _columnOrigins); } + if (_delegate != nil) + { + [nc removeObserver: _delegate name: nil object: self]; + _delegate = nil; + } [super dealloc]; } diff --git a/Source/NSWindow.m b/Source/NSWindow.m index 840c9b5f3..aa64ffeb7 100644 --- a/Source/NSWindow.m +++ b/Source/NSWindow.m @@ -643,6 +643,13 @@ static NSNotificationCenter *nc = nil; [GSServerForWindow(self) termwindow: _windowNum]; NSMapRemove(windowmaps, (void*)_windowNum); } + + if (_delegate != nil) + { + [nc removeObserver: _delegate name: nil object: self]; + _delegate = nil; + } + [super dealloc]; }