Xcode9.3, what is the difference between block body self- > and direct self call? 
 Why does Apple officially recommend using self-? what is the principle? 
-(MJRefreshNormalHeader *) refreshHeader {
if (!_refreshHeader) {
    _refreshHeader = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
        //                    footer
        [_homeCollectionView.mj_footer resetNoMoreData];
        [self requestHotProducts];
    }];
_refreshHeader.lastUpdatedTimeLabel.hidden = YES;
_refreshHeader.stateLabel.hidden = YES;
_refreshHeader.hidden = NO;
}
return _refreshHeader;}
