我不知道为什么。用法很正常。
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
就是这样。但是泄漏检测器MLeaksFinder警告UITableViewHeaderFooterView正在泄漏。在Instruments分配摘要中,当UITableView已经发布时,UITableViewHeaderFooterView会保持不变。
这发生在iOS9和iOS10上。它没有被释放的可能原因是什么?
当然是ARC
显示代码
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
if (self.dataSource.count == 0 || section != 0) {
return nil;
}
XXXHistoryHeader *view = [tableView dequeueReusableHeaderFooterViewWithIdentifier:[XXXHistoryHeader reuseIdentifier]];
view.frame = CGRectMake(0, 0, MZDApplicationFrame.size.width, 95);
return view;
}
我的表只有1个第1节的标题。我已经尝试使用nil reuseIdentifier初始化它不起作用
@interface XXXHistoryHeader : UITableViewHeaderFooterView
@property (nonatomic, strong) UILabel *count;
@property (nonatomic, strong) UILabel *money;
- (void)setCount:(NSString *)count totalMoney:(NSString *)money;
+ (NSString *)reuseIdentifier;
@end
@implementation XXXHistoryHeader
+ (NSString *)reuseIdentifier
{
return NSStringFromClass(self);
}
- (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithReuseIdentifier:reuseIdentifier];
if (self) {
//not important
}
return self;
}
- (void)setCount:(NSString *)count totalMoney:(NSString *)money
{
//not important
}
- (void)dealloc
{
NSLog(@"dealloc!!!");
}
@end
答案 0 :(得分:0)
将你的tableview作为weak
引用,它可以解决你的问题,一些它无法释放它的内存,所以通过弱引用它可以帮助你的代码释放整个tableview从堆栈中删除类对象后。
谢谢