Tôi đã nghe nói rằng tôi nên luôn luôn sử dụng weakSelf
trong các khối để tránh giữ lại chu kỳ, nhưng những gì về khối công văn? Trong trường hợp này, phương pháp của tôi xử lý một phản ứng lỗi từ máy chủ của tôi trong đoạn mã sau:Tôi có nên sử dụng "weakSelf" trong khối công văn không?
//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];
});
}
Tôi có nên sử dụng weakSelf
trong khối này giống như tôi làm điều đó trong các khối khác?
Bạn có thể đưa ra ví dụ về thời điểm nó sẽ giữ lại không? – sbarow
Đây là một ví dụ, mặc dù với một vài bước trung gian: http://stackoverflow.com/q/11822476/603977 –
Cảm ơn bạn đã giải thích điều đó rất tốt! Và cảm ơn ví dụ! :) – Rafi