diff options
author | Sebastian Schmidt <mrschmidt@google.com> | 2017-06-15 09:43:31 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-15 09:43:31 -0700 |
commit | 5cb9446fab0606b0ea6a49dcda50fb6bb6e5bbd4 (patch) | |
tree | c4aa472320bfb041540c5a865255b968b88016b4 /Firebase/Storage/FIRStorageGetMetadataTask.m | |
parent | c47a19dcf4fd341dbb290f0135b1aa9feda85da5 (diff) |
Calling stopFetching on GTMSessionFetcher to stop callbacks from bein… (#81)
* Calling stopFetching on GTMSeesionFetcher to stop callbacks from being called after deallocation.
Also fixing retain cycles in all task classes.
* Addressing build warnings
* Adjusting indentation
Diffstat (limited to 'Firebase/Storage/FIRStorageGetMetadataTask.m')
-rw-r--r-- | Firebase/Storage/FIRStorageGetMetadataTask.m | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/Firebase/Storage/FIRStorageGetMetadataTask.m b/Firebase/Storage/FIRStorageGetMetadataTask.m index d0e8981..c7be8cc 100644 --- a/Firebase/Storage/FIRStorageGetMetadataTask.m +++ b/Firebase/Storage/FIRStorageGetMetadataTask.m @@ -26,6 +26,9 @@ FIRStorageVoidMetadataError _completion; } +@synthesize fetcher = _fetcher; +@synthesize fetcherCompletion = _fetcherCompletion; + - (instancetype)initWithReference:(FIRStorageReference *)reference fetcherService:(GTMSessionFetcherService *)service completion:(FIRStorageVoidMetadataError)completion { @@ -36,6 +39,10 @@ return self; } +- (void) dealloc { + [_fetcher stopFetching]; +} + - (void)enqueue { NSMutableURLRequest *request = [self.baseRequest mutableCopy]; request.HTTPMethod = @"GET"; @@ -45,8 +52,12 @@ _completion = nil; GTMSessionFetcher *fetcher = [self.fetcherService fetcherWithRequest:request]; + _fetcher = fetcher; fetcher.comment = @"GetMetadataTask"; - [fetcher beginFetchWithCompletionHandler:^(NSData *data, NSError *error) { + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-retain-cycles" + _fetcherCompletion = ^(NSData *data, NSError *error) { if (error) { if (!self.error) { self.error = [FIRStorageErrors errorWithServerError:error reference:self.reference]; @@ -54,6 +65,7 @@ if (callback) { callback(nil, self.error); } + _fetcherCompletion = nil; return; } @@ -78,6 +90,13 @@ callback(nil, self.error); } } + _fetcherCompletion = nil; + }; +#pragma clang diagnostic pop + + __weak FIRStorageGetMetadataTask *weakSelf = self; + [fetcher beginFetchWithCompletionHandler:^(NSData *data, NSError *error) { + weakSelf.fetcherCompletion(data, error); }]; } |