Я слышал, что я должен всегда использовать weakSelf
в блоках, чтобы избежать удержания циклов, но как насчет блоков отправки? В этом случае, мой метод обрабатывает ошибочный ответ от моего сервера в следующем коде:Должен ли я использовать «weakSelf» в диспетчерском блоке?
//handling server errors (particularly "Token Refresh Failed" ones)
-(void)handleServerErrorResponse:(NSString *)error {
dispatch_async(dispatch_get_main_queue(), ^{
UIAlertController *alertController = [DialogHelper getAlertForSimpleAuthError:error];
if ([error isEqualToString:@"Your login session has expired"]) {
[alertController addAction:[UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action)
{
[MyModelDataCenter emptyDataCenter];
[MyAPIInterface sharedInstance].authToken = nil;
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
[defaults removeObjectForKey:@"authToken"];
[defaults removeObjectForKey:@"defaultUserObjectDictionary"];
[defaults synchronize];
[AuthenticationHelper sharedInstance].loggedInUser = nil;
[self.navigationController popToRootViewControllerAnimated:YES];
}]];
}
else {
[alertController addAction:[UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:nil]];
}
[self presentViewController:alertController animated:YES completion:nil];
});
}
Должен ли я использовать weakSelf
в этом блоке так же, как я делаю это в других блоках?
Не могли бы вы привести пример того, когда он будет сохранен? – sbarow
Вот пример, хотя и с несколькими промежуточными шагами: http://stackoverflow.com/q/11822476/603977 –
Спасибо за объяснение, что так хорошо! И спасибо за пример! :) – Rafi