方法 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: 消息发送到您的对象的委托。可能有一种更简洁的方法来实现这一点(或者至少它应该有评论)
我正在研究一个开源的下拉刷新控件,它在 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: 消息发送到您的对象的委托。可能有一种更简洁的方法来实现这一点(或者至少它应该有评论)