aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firebase/Storage/FIRStorageUpdateMetadataTask.m
diff options
context:
space:
mode:
authorGravatar Sebastian Schmidt <mrschmidt@google.com>2017-06-15 09:43:31 -0700
committerGravatar GitHub <noreply@github.com>2017-06-15 09:43:31 -0700
commit5cb9446fab0606b0ea6a49dcda50fb6bb6e5bbd4 (patch)
treec4aa472320bfb041540c5a865255b968b88016b4 /Firebase/Storage/FIRStorageUpdateMetadataTask.m
parentc47a19dcf4fd341dbb290f0135b1aa9feda85da5 (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.m24
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);
}];
}