Я реализую представление входа в систему, и мне нужно, чтобы это представление отображалось в любое время в моем приложении.Поэтому, чтобы упростить процесс, я создаю метод класса с именем showLogin, и когда представление закрывается, я хочу, чтобы оно освободилось, поэтому я сделал следующее:
@implementation LoginController
@synthesize releaseOnClose;
+ (void)showLogin {
LoginController *login = [[LoginController alloc] init];
login.releaseOnClose = YES;
[login show]; // Potential leak of login object
}
- (id)init {
if (self = [super initWithNibName:@"Login" bundle:[NSBundle mainBundle]]) {
releaseOnClose = NO;
}
return self;
}
- (void)show {
if (self.view.superview == nil) {
// show the view
}
}
- (void)btnCloseTouched {
[self.view removeFromSuperview];
if (releaseOnClose) {
[self release];
}
}
Статический анализатор сообщает мне, что в showLogin есть потенциальная утечка, но на самом деле это не так, потому что я освобождаю объект в btnCloseTouched (не беспокойтесь о других функциях представления входа в систему, сейчас он просто открывается и закрывается).
Так что я хотел бы знатькак избежать этого сообщения о потенциальной утечке и как правильно реализовать этот вид, если метод класса правильно обрабатывает память?
Идея
Еще немного о том, что я думал,Я хотел вызвать showLogin, и он существовал бы до тех пор, пока не был закрыт, и вызывающий не должен был управлять экземпляром.