2010-11-19 100 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