是否有其他方法而不是使用boundingRectWithSize计算标签高度:options:attributes:?

时间:2016-11-30 06:16:39

标签: ios uitableview memory-leaks

Review我的代码是很久以前写的,我在我的tableView模型中发现了两个严重的问题,都是由boundingRectWithSize:options:attributes:方法引起的,但没有给出一个明确的方法解决了这个问题。

What is CG Raster Data?

1)使用此方法会导致内存泄漏。我发现一些与boundingRectWithSize:options:attributes:相关的帖子导致内存泄漏,但找不到替代它的好方法。

2)如果在模型的property setter方法中计算,tableView将减慢最多。如果我fetch data通过网络创建models

代码的内存泄漏:

the leak

model中,此代码如下:

    - (NSString *)lml_content {

    CGFloat contentW = [UIScreen mainScreen].bounds.size.width - 20;
    if (contentW != _lastContentWith) {
        _lastContentWith = contentW;

        CGRect textRect = [_lml_content boundingRectWithSize:CGSizeMake(contentW, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin |     NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:contentLabelFontSize]}  context:nil];

        if (maxContentLabelHeight == 0) {
            maxContentLabelHeight = [UIFont systemFontOfSize:contentLabelFontSize].lineHeight * 3;  // 最多显示3行
        }

        if (textRect.size.height > maxContentLabelHeight) {
            _shouldShowMoreButton = YES;
        }else {
            _shouldShowMoreButton = NO;
        }
    }

    return _lml_content;

}

有没有办法避免memory leak并解决计算label身高问题tableView减慢的问题?

0 个答案:

没有答案