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/FIRStorageUpdateMetadataTask.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/FIRStorageUpdateMetadataTask.m')
-rw-r--r-- | Firebase/Storage/FIRStorageUpdateMetadataTask.m | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/Firebase/Storage/FIRStorageUpdateMetadataTask.m b/Firebase/Storage/FIRStorageUpdateMetadataTask.m index dbd276b..5f019f4 100644 --- a/Firebase/Storage/FIRStorageUpdateMetadataTask.m +++ b/Firebase/Storage/FIRStorageUpdateMetadataTask.m @@ -24,6 +24,9 @@ FIRStorageMetadata *_updateMetadata; } +@synthesize fetcher = _fetcher; +@synthesize fetcherCompletion = _fetcherCompletion; + - (instancetype)initWithReference:(FIRStorageReference *)reference fetcherService:(GTMSessionFetcherService *)service metadata:(FIRStorageMetadata *)metadata @@ -36,6 +39,10 @@ return self; } +- (void) dealloc { + [_fetcher stopFetching]; +} + - (void)enqueue { NSMutableURLRequest *request = [self.baseRequest mutableCopy]; NSDictionary *updateDictionary = [_updateMetadata dictionaryRepresentation]; @@ -52,8 +59,11 @@ _completion = nil; GTMSessionFetcher *fetcher = [self.fetcherService fetcherWithRequest:request]; - fetcher.comment = @"UpdateMetadataTask"; - [fetcher beginFetchWithCompletionHandler:^(NSData *data, NSError *error) { + _fetcher = fetcher; + +#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]; @@ -61,6 +71,7 @@ if (callback) { callback(nil, self.error); } + _fetcherCompletion = nil; return; } @@ -85,6 +96,15 @@ callback(nil, self.error); } } + _fetcherCompletion = nil; + }; +#pragma clang diagnostic pop + + fetcher.comment = @"UpdateMetadataTask"; + + __weak FIRStorageUpdateMetadataTask *weakSelf = self; + [fetcher beginFetchWithCompletionHandler:^(NSData *data, NSError *error) { + weakSelf.fetcherCompletion(data, error); }]; } |