Ios ARC的奇怪问题

Ios ARC的奇怪问题,ios,objective-c,automatic-ref-counting,Ios,Objective C,Automatic Ref Counting,我正在尝试拉出UITableView的tableHeaderView @property (weak, nonatomic) UIView *floatingHeaderView; - (void)setUp { UIView *tableHeaderView = self.tableView.tableHeaderView; UIView *dummyTableHeaderView = [[UIView alloc] initWithFrame:tableHeaderView

我正在尝试拉出
UITableView
tableHeaderView

@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;
}
首先,我强烈引用了
self.tableView.tableHeaderView
。然后,我从superview中删除了
tableHeaderView
,并将其添加到
self.tableView
。最后,我对
tableViewHeader
做了一个弱引用,因为我认为
tableViewHeader
self.tableView.subview
有一个强引用。但在运行时,
self.floatingHeaderView
指向
nil


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

我非常确定tableView维护了对其子视图的强引用,而不是相反。我猜你什么时候调用[tableHeaderView removeFromSuperview];它向它的superview发出一个委托调用,告诉它需要删除它。这仍然是一个薄弱的参考


因此,您需要使floatingHeaderView成为一个强指针。

何时调用setUp?