【问题标题】:Would I need to refer to self with weak in AFNetworkingReachability block我需要在 AFNetworking 可达性块中引用 self 吗
【发布时间】:2014-02-11 22:11:30
【问题描述】:

正如标题所说:像这样在 AFNetworkingReachability 块中调用函数时,我是否需要对 self 进行弱引用?

__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;
            }
        }];

提前谢谢你。

【问题讨论】:

    标签: ios iphone objective-c automatic-ref-counting afnetworking


    【解决方案1】:

    如果您的视图控制器没有对AFNetworkReachabilityManager sharedManager 的强引用(直接或间接),则没有。您只需要遵循此模式即可打破强引用循环。

    注意我们的间接强引用循环,clang 不会警告您。例如,您的视图控制器可能具有指向 API 对象的 strong 属性,该对象可能具有对 AFHTTPRequestOperationManager 的引用,而后者可能强烈引用可达性管理器。

    如果您遵循正确的属性规则 - 仅使用 strong 表示所有权,否则使用 weak - 您通常会没事的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多