方法 Swizzling - 请解释此实现中的 属性 映射

Method Swizzling - Please explain property mapping within this implementation

我正在研究一个开源的下拉刷新控件,它在 UIViewController 类别上调配生命周期方法,如下所示:

- (void)INBPullToRefreshView_viewWillAppear:(BOOL)animated
{
    [self setClearNavigationBar:YES];
    [self INBPullToRefreshView_viewWillAppear:animated];
    UITableView *tableView = self.pullToRefresh.tableView;
    tableView.contentOffset = tableView.contentOffset;
    self.pullToRefresh.showPullToRefresh = YES;
}

我知道当调用 viewWillAppear 时它映射到上面的方法,调用 [self INBPullToRefreshView_viewWillAppear:animated]; 将映射到原始的 viewWillAppear

然而,以下是做什么的?:

tableView.contentOffset = tableView.contentOffset;

这里是控件的 github source

我怀疑作者试图使用 setContentOffset: 的副作用,也许是强制重新计算。但是作者似乎对这个项目很活跃,所以为什么不在 github 问题中询问 intmain?

当然,这种方法调配极其危险和脆弱的标准警告适用。

我相信你问的是与 swizzling 本身无关的问题?

设置 contentOffset 属性 将导致 scrollViewDidScroll: 消息发送到您的对象的委托。可能有一种更简洁的方法来实现这一点(或者至少它应该有评论)