Нужно ли ссылаться на себя со слабым в блоке AFNetworkingReachability

Как гласит заголовок: нужно ли делать слабую ссылку на себя, при вызове функций в блоке AFNetworkingReachability, как это?

__weak myViewController* weakSelf = self;

     [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status)
        {

            switch (status) {
            case AFNetworkReachabilityStatusReachableViaWiFi:

                DLog(@"No Internet Connection");

                NSLog([weakSelf reachable] ? @"YES" : @"NO");

               weakSelf.aProperty = aPropertyValue. 

               [weakSelf loadPlaces]; // This function does also contain a block

             break;
            default:

                break;
            }
        }];

Заранее спасибо.

1 ответ

Решение

Если ваш контроллер представления не имеет строгой ссылки (прямо или косвенно) на AFNetworkReachabilityManager sharedManager, Тогда нет. Вам нужно только следовать этому шаблону, чтобы разорвать сильные циклы ссылок

Следите за нашими непрямыми сильными ссылочными циклами, о которых вас не будет предупреждать. Например, ваш контроллер представления может иметь strong свойство объекта API, который может иметь ссылку на AFHTTPRequestOperationManager, который может строго ссылаться на менеджер достижимости.

Если вы следуете правильным правилам для свойств - только используя strong указать право собственности, и weak иначе - с тобой обычно все будет в порядке.

Другие вопросы по тегам