避免使用多个嵌套方法调用保留周期

时间:2017-12-26 16:29:50

标签: objective-c

我正在尝试追踪内存泄漏,并想知道这是如何工作的。在BaseHelper类中,有一个sessionManager的属性:

express-mung

到目前为止,这部分看起来还不错,因为它使用weakSelf来调用reachabilityChanged。

req.body.direction

同样,这部分看起来不错,因为它使用的是weakSelf。

BaseHelper
@property(nonatomic, strong) SessionManager *sessionManager;

- (void)setup {
    __weak typeof(self) weakSelf = self;
    [self.sessionManager reachabilityChanged:^(BOOL isReachable) {
        dispatch_async(dispatch_get_main_queue(), ^{
            [weakSelf reachabilityChanged:isReachable];    
        });
    }]
}

如果您不使用weakSelf,并且在- (void) reachabilityChanged:(BOOL)isReachabile { __block typeof(self) __weak weakSelf = self; [self fetchSettingsWithCompletion:^(BOOL success, NSError * _Nullable error) { if (success){ [weakSelf processSettings]; } else if (!success && !error){ [weakSelf errorHandling]; } }]; } - (void) processSettings { // New, saved, or default publish settings? [self setupLogger]; [self setupOtherProperties]; } 等其他方法中,如果您不再次引用weakSelf,那么您是否有冒险捕获主要对象的属性并且保留周期?

0 个答案:

没有答案