我不能讓靜態分析「喜歡」這樣的代碼,但在同一時間,我不能自動釋放該被存儲到控制器的對象,所以它是無用的調用者。使用這兩個靜態方法,我試圖讓在任何視圖上顯示活動控制器變得更加容易(不會阻止選項卡)。內存泄漏電位;不能用一個UIViewController
PZActivityOverlayController *view = [PZActivityOverlayController displayOverView:self.view];
// Later on, when complete
[PZActivityOverlayController remove:view];
原始代碼:
+ (PZActivityOverlayController *)displayOverView:(UIView *)aView {
PZActivityOverlayController *controller = [[PZActivityOverlayController alloc] initWithFrame:aView.superview.bounds labelText:@"Loading"];
[controller viewWillAppear:YES];
[aView.superview insertSubview:controller.view aboveSubview:aView];
return controller; // Potential leak of object stored into controller
}
+ (void)remove:(PZActivityOverlayController *)display {
[display viewWillDisappear:YES];
[display.view removeFromSuperview];
[display release]; // However it won't leak because it gets released here
}
也許我有責任鏈錯在這裏,但它只是爲了方便。另一種方法是將這些方法的內容寫入任何地方(這對我來說太違反DRY了)。
你爲什麼不能自動釋放** [控制器自動釋放] **?它會崩潰嗎? –
由當時的呼叫者電話+刪除,對象已經被自動釋放池釋放。 – Tatsh