2010-11-19 140 views
3
label = (UILabel *)[cell.contentView viewWithTag:1]; 
      label.text =labelString; 
      size = [label.text sizeWithFont:[UIFont fontWithName:@"ArialMT" size:14] constrainedToSize:CGSizeMake(320,9999) lineBreakMode:UILineBreakModeWordWrap]; 
      label.frame = CGRectMake(5, 5, 295, (size.height+25)); 

UIFont離開256字節泄漏。Iphone中的內存泄漏

還有一些其他泄漏也出現在我的應用程序相關的網絡工具包和基礎庫。

NSString *path = [[NSBundle mainBundle] pathForResource:@"Prayers" ofType:@"html"]; 
    NSFileHandle *readHandle = [NSFileHandle fileHandleForReadingAtPath:path]; 

    NSString *htmlString = [[NSString alloc] initWithData: 
          [readHandle readDataToEndOfFile] encoding:NSUTF8StringEncoding]; 

這些行離開UIKit WebKit和DataDetectorsCore相關的泄漏。

請爲此問題提出任何解決方案。總漏出內存大約爲3 KB,我是否可以在應用程序中保留此內容。

+1

在事情的宏偉計劃中,3KB並不是很多...我是新手iPhone開發人員,但使用Appcelerator我通常會獲得40多MB的內存泄露(他們的框架中存在一個bug),並且該應用程序將運行罰款(在較舊的設備上過一段時間後會崩潰)。之後,我切換到ObjC,因爲我寧願追查我的內存泄漏比別人的...反正,你可能想要更專家的意見,但我不認爲3KB是特別差... – 2010-11-19 05:10:56

+1

IMO內存泄漏aren如果它們不能隨着時間的推移而增長,那麼它就不會那麼糟糕,忘記在這裏釋放一些對象,並且不會殺死一個應用程序,但會隨着時間而增加內存泄漏。因此,無論應用程序運行多長時間,如果它不變3KB,您可以考慮忽略它(這就是說,我個人從來沒有將內存泄漏的東西帶出專業的自豪感),有時雖然memleaks是別的東西的症狀,所以它總是很好的調查。 – 2010-11-19 05:18:28

回答

0

您提到的UIFont泄漏可能不會泄漏。當您使用fontWithName方法時,UIFont未被釋放的可能性是UIFont的內部緩存。

+0

當沒有檢測到對分配對象的引用時,確定泄漏。如果它被緩存了,會有一個參考,並且泄漏檢測器不會認爲它泄漏。 – dreamlax 2010-11-19 05:38:17

+2

不完全;有許多遊戲可以用來隱藏泄漏分析機制檢測到的指針。錯誤肯定是罕見的,但確實發生。另一方面,還是常見的否定性否定。 – bbum 2010-11-19 05:42:53

1

我懷疑你有泄漏的UITableViewCell實例。 你做了一些自定義的UITableViewCells,也許你需要檢查那些UITableViewCells。

+0

我在儀器上查了一下它顯示這個泄漏,有些時候沒有,但它肯定會被UIFont拋出。還有一個漏洞在這裏介紹,因爲Web視圖(Web工具包)我在上面的代碼中提到。請提出一些解決方案。感謝您的支持。 – Ishu 2010-11-19 12:35:32