我對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