Skip to content

Commit 5ce2271

Browse files
committed
Safeguard API usage and delegate reset in ProductsRequestHandler.
1 parent 7eb17b6 commit 5ce2271

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

Parse/Internal/Product/ProductsRequestHandler/PFProductsRequestHandler.m

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ - (instancetype)initWithProductsRequest:(SKProductsRequest *)request {
4343
self = [super init];
4444
if (!self) return nil;
4545

46+
_taskCompletionSource = [BFTaskCompletionSource taskCompletionSource];
47+
4648
_productsRequest = request;
4749
_productsRequest.delegate = self;
4850

@@ -63,8 +65,9 @@ - (void)dealloc {
6365
///--------------------------------------
6466

6567
- (BFTask *)findProductsAsync {
66-
_taskCompletionSource = [BFTaskCompletionSource taskCompletionSource];
67-
[_productsRequest start];
68+
if (!_taskCompletionSource.task.completed) {
69+
[_productsRequest start];
70+
}
6871
return _taskCompletionSource.task;
6972
}
7073

@@ -73,20 +76,22 @@ - (BFTask *)findProductsAsync {
7376
///--------------------------------------
7477

7578
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
79+
_productsRequest.delegate = nil;
80+
7681
PFProductsRequestResult *result = [[PFProductsRequestResult alloc] initWithProductsResponse:response];
7782
[self.taskCompletionSource trySetResult:result];
7883
}
7984

8085
- (void)request:(SKRequest *)request didFailWithError:(NSError *)error {
81-
[self.taskCompletionSource trySetError:error];
82-
8386
// according to documentation, this method does not call requestDidFinish
84-
request.delegate = nil;
87+
_productsRequest.delegate = nil;
88+
89+
[self.taskCompletionSource trySetError:error];
8590
}
8691

8792
- (void)requestDidFinish:(SKRequest *)request {
8893
// the documentation assures that this is the point safe to get rid of the request
89-
request.delegate = nil;
94+
_productsRequest.delegate = nil;
9095
}
9196

9297
@end

0 commit comments

Comments
 (0)