Ho sentito che dovrei sempre usare weakSelf
in blocchi per evitare i cicli di conservazione, ma per quanto riguarda i blocchi di spedizione? In questo caso, il mio metodo gestisce una risposta di errore dal mio server nel codice seguente:Devo utilizzare "weakSelf" In un blocco di spedizione?
//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];
});
}
Dovrei usare weakSelf
in questo blocco lo stesso che lo faccio in altri blocchi?
Puoi dare un esempio di quando conserverebbe? – sbarow
Ecco un esempio, anche se con pochi passaggi intermedi: http://stackoverflow.com/q/11822476/603977 –
Grazie per averlo spiegato così bene! E grazie per l'esempio! :) – Rafi