ARC的奇怪问题

时间:2014-06-07 20:45:30

标签: ios objective-c automatic-ref-counting

我正在尝试提取tableHeaderView的{​​{1}}。

UITableView

首先,我强烈提及@property (weak, nonatomic) UIView *floatingHeaderView; - (void)setUp { UIView *tableHeaderView = self.tableView.tableHeaderView; UIView *dummyTableHeaderView = [[UIView alloc] initWithFrame:tableHeaderView.frame]; CGRect frame = tableHeaderView.frame; frame.size.width = self.tableView.frame.size.width; tableHeaderView.frame = frame; [tableHeaderView removeFromSuperview]; [self.tableView addSubview:tableHeaderView]; self.tableView.tableHeaderView = dummyTableHeaderView; self.floatingHeaderView = tableHeaderView; } 。然后,我从superview中删除了self.tableView.tableHeaderView并将其添加到tableHeaderView。最后,我对self.tableView提出了弱引用,因为我认为tableViewHeadertableViewHeader有强烈的引用。但在运行时,self.tableView.subviews指向self.floatingHeaderView

如何解决这个奇怪的问题?

1 个答案:

答案 0 :(得分:0)

我非常确定tableView保留了对它的子视图的强引用,而不是相反。我打电话给你[tableHeaderView removeFromSuperview];它让代表调用它的超级视图告诉它它需要被删除。这仍然是一个弱的参考。

所以你需要使floatingHeaderView成为一个强大的指针。