Review
我的代码是很久以前写的,我在我的tableView
模型中发现了两个严重的问题,都是由boundingRectWithSize:options:attributes:
方法引起的,但没有给出一个明确的方法解决了这个问题。
boundingRectWithSize:options:attributes:
相关的帖子导致内存泄漏,但找不到替代它的好方法。
2)如果在模型的property
setter方法中计算,tableView
将减慢最多。如果我fetch data
通过网络创建models
。
代码的内存泄漏:
在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
减慢的问题?