我对iPhone开发相对较新,所以这可能是我的错,但它违背了我见过的。 :)UIAlertView显示导致内存泄漏
我认为我创建了一个UIAlertView,它只存在于'if'语句的真空中。
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
if(!data)
{
// Add an alert
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"Unable to contact server"
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
NSLog(@"retain count before show: %i", alert.retainCount);
[alert show];
NSLog(@"retain count before release: %i", alert.retainCount);
[alert release];
NSLog(@"retain count after release: %i", alert.retainCount);
return nil;
}
但是,控制台日志挡住了我。
retain count before show: 1
retain count before release: 6
retain count after release: 5
我试过还增加了:
alert = nil;
发布之后。这使得保留计数为0,但我仍然显示泄漏。如果有帮助,泄漏的责任框架是UIKeyboardInputManagerClassForInputMode。我也使用OS 4 Beta 3.
所以任何人有任何想法如何调用本地UIAlertView的保留计数将自己增加5时显示?
感谢您的帮助!
我看到了同样的事情 - 与iOS 4.1的发布版本。该版本似乎并不重要,我尝试了Autorelease - 相同的东西。这肯定是操作系统中的一个bug,对吧? – Axeva 2010-10-08 18:39:18
我今天在iOS 4.1下看到了同样的东西,并且非常感谢您的回答。 – AechoLiu 2010-10-13 07:48:17
但是如何解决这个问题呢? 我处于相同的情况。分配后,retainccount为1; 显示alertView后retaincount是6 后释放它retaincount停留5 - >和内存泄漏发生 – 2011-10-08 12:44:17