Search code examples
objective-cmethod-swizzling

Method Swizzling - Please explain property mapping within this implementation


I was looking into an open source pull-to-refresh control and it swizzle lifecycle methods on a UIViewController category like so:

- (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;
}

I get that when viewWillAppear was called it mapped to the above method, and that calling [self INBPullToRefreshView_viewWillAppear:animated]; will map to the original viewWillAppear.

However, what does the following do?:

tableView.contentOffset = tableView.contentOffset;

Here's the github source for the control.


Solution

  • I believe you're asking something unrelated to the swizzling itself?

    Setting the contentOffset property will cause a scrollViewDidScroll: message sent to the delegate of your object. There's probably a cleaner way to accomplish that (or at least it should have a comment)