Нет, вы должны проверить после strongify
, потому что он может прекратить существовать, пока вы не укрепите его.
После укрепления не все равно прекратит существование, даже проверка на nil
не потребует никакой синхронизации , Я не знаю, где вы получили такие недействительные рекомендации.
if (weakself) { // not nil here
__strong self = weakself //already nil here
[self doSomeAction]; //you don't have retain cycles,
// but there is a potentical crash, for example if you are calling blocks
@ strongify делают это точно так, как вы уже пишете, это просто вспомогательный макрос:
__strong typeof(weakSelf) self = weakself