gpt4 book ai didi

ios - sizeWithFont 内存泄漏 :constrainedToSize:lineBreakMode:

转载 作者:行者123 更新时间:2023-11-29 04:09:18 26 4
gpt4 key购买 nike

尝试创建 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 大小)来确认这是泄漏的行。在模拟器和设备上都会发生。

最佳答案

在您的语句 newsLabel.font = [UIFont fontWithName:@"HelveticaNeue"size:12]; 中,您创建一个要自动释放的 UIFont 对象。但是,如果您的代码在没有使用 @autoreleasepool {} 显式设置自动释放池的线程中运行,则该对象将永远不会被释放(因为不存在自动释放池),并且会泄漏。
因此,如果您的代码确实在单独的线程中运行,请检查您是否设置了自动释放池。

关于ios - sizeWithFont 内存泄漏 :constrainedToSize:lineBreakMode:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14676705/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com