What is the difference between block body self- > and direct self calls?

Under

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;

}

Mar.11,2021

when accessing an object, self. It's the same as self- >, which is the access object itself.
self. when lazy loading is performed when declaring properties on this object Property, which is equal to calling the lazy loading method, and the self- > property, which is the object itself that calls this property

Menu