From e549ee33a97e62e377225ac8d94c34da3abd3dc6 Mon Sep 17 00:00:00 2001 From: Dan Weeks Date: Tue, 30 Oct 2012 11:58:54 -0700 Subject: [PATCH] use the weakself/strongself pattern to fix AFHTTPClient not being released see AFNetworking issue #581 --- AFNetworking/AFHTTPClient.m | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/AFNetworking/AFHTTPClient.m b/AFNetworking/AFHTTPClient.m index 9673fa0..1626525 100644 --- a/AFNetworking/AFHTTPClient.m +++ b/AFNetworking/AFHTTPClient.m @@ -335,11 +335,17 @@ static void AFNetworkReachabilityReleaseCallback(const void *info) {} } self.networkReachability = SCNetworkReachabilityCreateWithName(kCFAllocatorDefault, [[self.baseURL host] UTF8String]); - + + __weak AFHTTPClient *weakSelf = self; AFNetworkReachabilityStatusBlock callback = ^(AFNetworkReachabilityStatus status){ - self.networkReachabilityStatus = status; - if (self.networkReachabilityStatusBlock) { - self.networkReachabilityStatusBlock(status); + __strong AFHTTPClient *strongSelf = weakSelf; + if (!strongSelf) { + // the weak ref is gone, depart this block + return; + } + strongSelf.networkReachabilityStatus = status; + if (strongSelf.networkReachabilityStatusBlock) { + strongSelf.networkReachabilityStatusBlock(status); } };