在尝试创建CGSize以设置UILabel的正确高度时,我遇到了泄漏。在heightForRowAtIndexPath中设置高度时,我也会收到相同的泄漏。
这是泄漏的代码段:
CGSize size = [news.news sizeWithFont:[UIFont fontWithName:@"HelveticaNeue" size:12] constrainedToSize:CGSizeMake(230.0f, CGFLOAT_MAX) lineBreakMode:NSLineBreakByWordWrapping];
UILabel *newsLabel = [[UILabel alloc] initWithFrame:CGRectMake(65, 50, 230, size.height)];
newsLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:12];
newsLabel.textAlignment = NSTextAlignmentLeft;
newsLabel.text = news.news;
newsLabel.numberOfLines = 0;
newsLabel.lineBreakMode = NSLineBreakByWordWrapping;
newsLabel.textColor = COLOR_DARK_GRAY;
newsLabel.highlightedTextColor = COLOR_WHITE;
newsLabel.backgroundColor = COLOR_CLEAR;
[cell.contentView addSubview:newsLabel];
[newsLabel release];
以下是泄漏工具中列出的泄漏:
泄露的对象:icu :: UCharCharacterIterator 负责任的图书馆:WebCore 负责框架:WebCore :: LineBreakIteratorPool :: take(WTF :: AtomicString const&)
同样是指向同一行的不同泄漏:
泄露的对象:icu :: UCharCharacterIterator 负责任的图书馆:WebCore 负责框架:WebCore :: acquireLineBreakIterator(unsigned short const *,int,WTF :: AtomicString const&)
如果我能提供任何其他内容,我会很乐意这样做。我已经通过评论上面的单行(CGSize大小的创建)确认它是泄漏的线。在模拟器和设备上都会发生。
答案 0 :(得分:1)
在您的语句newsLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:12];
中,您创建了一个要自动释放的UIFont
对象。但是,如果您的代码在没有使用@autoreleasepool {}
显式设置的自动释放池的线程中运行,则此对象将永远不会被释放(因为不存在自动释放池),并且会泄漏。
因此,如果您的代码确实在单独的线程中运行,请检查您是否已设置自动释放池。
答案 1 :(得分:0)
除非您有权访问WebCore
代码,否则无需执行任何操作。你的代码看起来很好。 Apple的图书馆中有许多小漏洞,您有时只需要接受它们就不会消失。