diff --git a/Classes/Controllers/OpenRecentController.h b/Classes/Controllers/OpenRecentController.h index 3a9dcc1e7..55a90478b 100644 --- a/Classes/Controllers/OpenRecentController.h +++ b/Classes/Controllers/OpenRecentController.h @@ -10,9 +10,9 @@ @interface OpenRecentController : NSWindowController { - IBOutlet NSSearchField* searchField; + IBOutlet __weak NSSearchField* searchField; NSURL* selectedResult; - IBOutlet NSTableView* resultViewer; + IBOutlet __weak NSTableView* resultViewer; } @property (strong) NSMutableArray* currentResults; diff --git a/Classes/Controllers/PBGitCommitController.h b/Classes/Controllers/PBGitCommitController.h index aac727fc8..b014049be 100644 --- a/Classes/Controllers/PBGitCommitController.h +++ b/Classes/Controllers/PBGitCommitController.h @@ -17,14 +17,15 @@ // object sometime PBGitIndex *index; - IBOutlet NSTextView *commitMessageView; + IBOutlet __unsafe_unretained NSTextView *commitMessageView; + IBOutlet __weak NSButton *commitButton; + IBOutlet __weak PBNiceSplitView *commitSplitView; + IBOutlet NSArrayController *unstagedFilesController; IBOutlet NSArrayController *cachedFilesController; - IBOutlet NSButton *commitButton; IBOutlet PBGitIndexController *indexController; IBOutlet PBWebChangesController *webController; - IBOutlet PBNiceSplitView *commitSplitView; } @property(readonly) PBGitIndex *index; diff --git a/Classes/Controllers/PBGitHistoryController.h b/Classes/Controllers/PBGitHistoryController.h index 129e69ed4..73e8bd989 100644 --- a/Classes/Controllers/PBGitHistoryController.h +++ b/Classes/Controllers/PBGitHistoryController.h @@ -25,29 +25,29 @@ @interface PBGitHistoryController : PBViewController { IBOutlet PBRefController *refController; - IBOutlet NSSearchField *searchField; + IBOutlet __weak NSSearchField *searchField; IBOutlet NSArrayController* commitController; IBOutlet NSTreeController* treeController; - IBOutlet NSOutlineView* fileBrowser; + IBOutlet __weak NSOutlineView* fileBrowser; NSArray *currentFileBrowserSelectionPath; - IBOutlet PBCommitList* commitList; - IBOutlet PBCollapsibleSplitView *historySplitView; + IBOutlet __weak PBCommitList* commitList; + IBOutlet __weak PBCollapsibleSplitView *historySplitView; IBOutlet PBWebHistoryController *webHistoryController; QLPreviewPanel* previewPanel; IBOutlet PBHistorySearchController *searchController; IBOutlet GLFileView *fileView; - IBOutlet PBGitGradientBarView *upperToolbarView; - IBOutlet NSButton *mergeButton; - IBOutlet NSButton *cherryPickButton; - IBOutlet NSButton *rebaseButton; + IBOutlet __weak PBGitGradientBarView *upperToolbarView; + IBOutlet __weak NSButton *mergeButton; + IBOutlet __weak NSButton *cherryPickButton; + IBOutlet __weak NSButton *rebaseButton; - IBOutlet PBGitGradientBarView *scopeBarView; - IBOutlet NSButton *allBranchesFilterItem; - IBOutlet NSButton *localRemoteBranchesFilterItem; - IBOutlet NSButton *selectedBranchFilterItem; + IBOutlet __weak PBGitGradientBarView *scopeBarView; + IBOutlet __weak NSButton *allBranchesFilterItem; + IBOutlet __weak NSButton *localRemoteBranchesFilterItem; + IBOutlet __weak NSButton *selectedBranchFilterItem; - IBOutlet id webView; + IBOutlet __weak id webView; int selectedCommitDetailsIndex; BOOL forceSelectionUpdate; @@ -63,7 +63,7 @@ @property (readonly) NSArrayController *commitController; @property (readonly) PBRefController *refController; @property (readonly) PBHistorySearchController *searchController; -@property (readonly) PBCommitList *commitList; +@property (weak, readonly) PBCommitList *commitList; - (IBAction) setDetailedView:(id)sender; - (IBAction) setTreeView:(id)sender; diff --git a/Classes/Controllers/PBGitSidebarController.h b/Classes/Controllers/PBGitSidebarController.h index e28936c33..4c4d3ddd3 100644 --- a/Classes/Controllers/PBGitSidebarController.h +++ b/Classes/Controllers/PBGitSidebarController.h @@ -14,11 +14,10 @@ @class PBGitCommitController; @interface PBGitSidebarController : PBViewController { - IBOutlet NSWindow *window; - IBOutlet NSOutlineView *sourceView; + IBOutlet __weak NSOutlineView *sourceView; IBOutlet NSView *sourceListControlsView; - IBOutlet NSPopUpButton *actionButton; - IBOutlet NSSegmentedControl *remoteControls; + IBOutlet __weak NSPopUpButton *actionButton; + IBOutlet __weak NSSegmentedControl *remoteControls; NSMutableArray *items; diff --git a/Classes/Controllers/PBGitSidebarController.m b/Classes/Controllers/PBGitSidebarController.m index 659d81e7c..60d3d0811 100644 --- a/Classes/Controllers/PBGitSidebarController.m +++ b/Classes/Controllers/PBGitSidebarController.m @@ -36,7 +36,6 @@ @implementation PBGitSidebarController - (id)initWithRepository:(PBGitRepository *)theRepository superController:(PBGitWindowController *)controller { self = [super initWithRepository:theRepository superController:controller]; - [sourceView setDelegate:self]; items = [NSMutableArray array]; return self; @@ -45,7 +44,6 @@ - (id)initWithRepository:(PBGitRepository *)theRepository superController:(PBGit - (void)awakeFromNib { [super awakeFromNib]; - window.contentView = self.view; [self populateList]; historyViewController = [[PBGitHistoryController alloc] initWithRepository:repository superController:superController]; diff --git a/Classes/Controllers/PBGitWindowController.h b/Classes/Controllers/PBGitWindowController.h index b16f04ea5..b2656165d 100644 --- a/Classes/Controllers/PBGitWindowController.h +++ b/Classes/Controllers/PBGitWindowController.h @@ -15,18 +15,15 @@ PBViewController *contentController; PBGitSidebarController *sidebarController; - IBOutlet NSView *sourceListControlsView; - IBOutlet NSSplitView *splitView; - IBOutlet NSView *sourceSplitView; - IBOutlet NSView *contentSplitView; - IBOutlet NSTextField *statusField; - IBOutlet NSProgressIndicator *progressIndicator; - - PBViewController* viewController; - - IBOutlet NSToolbarItem *terminalItem; - IBOutlet NSToolbarItem *finderItem; + IBOutlet __weak NSView *sourceListControlsView; + IBOutlet __weak NSSplitView *splitView; + IBOutlet __weak NSView *sourceSplitView; + IBOutlet __weak NSView *contentSplitView; + IBOutlet __weak NSTextField *statusField; + IBOutlet __weak NSProgressIndicator *progressIndicator; + IBOutlet __weak NSToolbarItem *terminalItem; + IBOutlet __weak NSToolbarItem *finderItem; } @property (nonatomic, weak) PBGitRepository *repository; diff --git a/Classes/Controllers/PBGitWindowController.m b/Classes/Controllers/PBGitWindowController.m index 5fdbd71c5..fa501da6b 100644 --- a/Classes/Controllers/PBGitWindowController.m +++ b/Classes/Controllers/PBGitWindowController.m @@ -107,8 +107,10 @@ - (void) changeContentController:(PBViewController *)controller if (!controller || (contentController == controller)) return; - if (contentController) + if (contentController) { [contentController removeObserver:self forKeyPath:@"status"]; + [contentController didMoveFromSupercontroller]; + } [self removeAllContentSubViews]; @@ -300,4 +302,10 @@ - (void)splitView:(NSSplitView *)sender resizeSubviewsWithOldSize:(NSSize)oldSiz [mainView setFrame:mainFrame]; } +- (void)dealloc; +{ + NSLog( @"%@ dealloc", self.class ); + [contentController didMoveFromSupercontroller]; +} + @end diff --git a/Classes/Controllers/PBRefController.h b/Classes/Controllers/PBRefController.h index a9c11f4c2..dfc63bbcc 100644 --- a/Classes/Controllers/PBRefController.h +++ b/Classes/Controllers/PBRefController.h @@ -16,9 +16,9 @@ @class PBRefMenuItem; @interface PBRefController : NSObject { - IBOutlet PBGitHistoryController *historyController; + IBOutlet __unsafe_unretained PBGitHistoryController *historyController; IBOutlet NSArrayController *commitController; - IBOutlet PBCommitList *commitList; + IBOutlet __weak PBCommitList *commitList; IBOutlet NSPopUpButton *branchPopUp; } diff --git a/Classes/Controllers/PBViewController.h b/Classes/Controllers/PBViewController.h index dc574d949..aa68572ae 100644 --- a/Classes/Controllers/PBViewController.h +++ b/Classes/Controllers/PBViewController.h @@ -12,7 +12,7 @@ @interface PBViewController : NSViewController { __weak PBGitRepository *repository; - PBGitWindowController *superController; + __unsafe_unretained PBGitWindowController *superController; NSString *status; BOOL isBusy; @@ -39,4 +39,6 @@ - (NSResponder *)firstResponder; - (IBAction) refresh:(id)sender; +- (void)didMoveFromSupercontroller; + @end diff --git a/Classes/Controllers/PBViewController.m b/Classes/Controllers/PBViewController.m index a2cfadeac..e0f939d0c 100644 --- a/Classes/Controllers/PBViewController.m +++ b/Classes/Controllers/PBViewController.m @@ -61,4 +61,9 @@ - (void)viewLoaded { } +- (void)didMoveFromSupercontroller; +{ + superController = nil; +} + @end diff --git a/Classes/Controllers/PBWebHistoryController.h b/Classes/Controllers/PBWebHistoryController.h index f42a42e9f..255463fb0 100644 --- a/Classes/Controllers/PBWebHistoryController.h +++ b/Classes/Controllers/PBWebHistoryController.h @@ -18,8 +18,8 @@ @interface PBWebHistoryController : PBWebController { - IBOutlet PBGitHistoryController* historyController; - IBOutlet id contextMenuDelegate; + IBOutlet __unsafe_unretained PBGitHistoryController* historyController; + IBOutlet __weak id contextMenuDelegate; PBGitSHA* currentSha; NSString* diff; diff --git a/Classes/PBCommitList.h b/Classes/PBCommitList.h index 60d528e11..43ee15298 100644 --- a/Classes/PBCommitList.h +++ b/Classes/PBCommitList.h @@ -16,10 +16,10 @@ typedef void(^PBFindPanelActionBlock)(id sender); @interface PBCommitList : NSTableView { - IBOutlet WebView* webView; - IBOutlet PBWebHistoryController *webController; - IBOutlet PBGitHistoryController *controller; - IBOutlet PBHistorySearchController *searchController; + IBOutlet __weak WebView* webView; + IBOutlet __weak PBWebHistoryController *webController; + IBOutlet __unsafe_unretained PBGitHistoryController *controller; + IBOutlet __weak PBHistorySearchController *searchController; BOOL useAdjustScroll; NSPoint mouseDownPoint; diff --git a/Classes/Views/GLFileView.h b/Classes/Views/GLFileView.h index 2d49d95ed..d4d003536 100644 --- a/Classes/Views/GLFileView.h +++ b/Classes/Views/GLFileView.h @@ -14,12 +14,12 @@ @class PBGitHistoryController; @interface GLFileView : PBWebController { - IBOutlet PBGitHistoryController* historyController; - IBOutlet MGScopeBar *typeBar; + IBOutlet __unsafe_unretained PBGitHistoryController* historyController; + IBOutlet __weak MGScopeBar *typeBar; NSMutableArray *groups; NSString *logFormat; - IBOutlet NSView *accessoryView; - IBOutlet NSSplitView *fileListSplitView; + IBOutlet __weak NSView *accessoryView; + IBOutlet __weak NSSplitView *fileListSplitView; } - (void)showFile; diff --git a/Classes/Views/PBGitRevisionCell.h b/Classes/Views/PBGitRevisionCell.h index 8c9fd9532..c2983f31f 100644 --- a/Classes/Views/PBGitRevisionCell.h +++ b/Classes/Views/PBGitRevisionCell.h @@ -16,8 +16,8 @@ PBGitCommit *objectValue; PBGraphCellInfo *cellInfo; NSTextFieldCell *textCell; - IBOutlet PBGitHistoryController *controller; - IBOutlet id contextMenuDelegate; + IBOutlet __unsafe_unretained PBGitHistoryController *controller; + IBOutlet __weak id contextMenuDelegate; } - (int) indexAtX:(float)x; diff --git a/Classes/Views/PBQLOutlineView.h b/Classes/Views/PBQLOutlineView.h index d0f8284ba..57a7196d8 100644 --- a/Classes/Views/PBQLOutlineView.h +++ b/Classes/Views/PBQLOutlineView.h @@ -10,7 +10,7 @@ #import "PBGitHistoryController.h" @interface PBQLOutlineView : NSOutlineView { - IBOutlet PBGitHistoryController* controller; + IBOutlet __unsafe_unretained PBGitHistoryController* controller; } @end diff --git a/Classes/Views/PBQLTextView.h b/Classes/Views/PBQLTextView.h index 715e74efe..a95ebfe69 100644 --- a/Classes/Views/PBQLTextView.h +++ b/Classes/Views/PBQLTextView.h @@ -13,7 +13,7 @@ @interface PBQLTextView : NSTextView { - IBOutlet PBGitHistoryController *controller; + IBOutlet __unsafe_unretained PBGitHistoryController *controller; } @end diff --git a/Classes/git/PBGitHistoryGrapher.h b/Classes/git/PBGitHistoryGrapher.h index 0e02e6a3e..06a475531 100644 --- a/Classes/git/PBGitHistoryGrapher.h +++ b/Classes/git/PBGitHistoryGrapher.h @@ -17,7 +17,7 @@ @interface PBGitHistoryGrapher : NSObject { - id delegate; + __weak id delegate; NSOperationQueue *currentQueue; NSMutableSet *searchSHAs; diff --git a/Classes/git/PBGitHistoryList.m b/Classes/git/PBGitHistoryList.m index b6ea58204..dec9979a6 100644 --- a/Classes/git/PBGitHistoryList.m +++ b/Classes/git/PBGitHistoryList.m @@ -93,6 +93,7 @@ - (void)cleanup if (currentRevList) { [currentRevList removeObserver:self forKeyPath:@"commits"]; [currentRevList cancel]; + currentRevList = nil; } [graphQueue cancelAllOperations];