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

Objective c 方法Swizzling-请解释此实现中的属性映射,objective-c,method-swizzling,Objective C,Method Swizzling,我正在研究一种开源的刷新控件的方法,它在UIViewController类别上使用生命周期方法,如下所示: - (void)INBPullToRefreshView_viewWillAppear:(BOOL)animated { [self setClearNavigationBar:YES]; [self INBPullToRefreshView_viewWillAppear:animated]; UITableView *tableView = self.pullTo

我正在研究一种开源的刷新控件的方法,它在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;
}
当调用
viewwillbeen
时,我发现它映射到上述方法,调用
[self-inbpultorefreshview_-viewwillbeen:animated]将映射到原始的
视图将出现

但是,下面的操作是什么

tableView.contentOffset = tableView.contentOffset;


下面是控件的示例。

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


当然,标准的警告是,这种方法swizzling非常危险和脆弱。

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


当然,标准的警告是,这种方法非常危险和脆弱。

我相信你是在问一些与swizzling本身无关的问题


设置contentOffset属性将导致向对象的代理发送scrollViewDidScroll:消息。可能有一个更干净的方法来实现这一点(或者至少它应该有一个评论)

我相信你在问一些与swizzling本身无关的问题

设置contentOffset属性将导致向对象的代理发送scrollViewDidScroll:消息。可能有一个更干净的方法来实现这一点(或者至少应该有一个评论)