と自動解放使用することができない私は、このコード「様」静的分析を行うことができないが、同時に私は、コントローラに格納されますオブジェクトを自動解放することができないので、発信者のために役に立ちません。これらの2つの静的メソッドを使用して、(タブをブロックすることなく)どのビューにもアクティビティコントローラを表示しやすくしました。メモリリークの可能性; 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には多すぎるものです)。
できないのはなぜあなたオートリリース** [コントローラの自動リリース] **?それはクラッシュするのだろうか? –
呼び出し元が+ removeを呼び出すまでに、オブジェクトはすでに自動解放プールによって解放されています。 – Tatsh