aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firebase/Storage/FIRStorageGetMetadataTask.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/FIRStorageGetMetadataTask.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/FIRStorageGetMetadataTask.m')
-rw-r--r--Firebase/Storage/FIRStorageGetMetadataTask.m21
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);
}];
}