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?