From 3f1997cb6b775cdc5bee124ff8bbbbf942e14579 Mon Sep 17 00:00:00 2001 From: Liang Ma Date: Fri, 8 Mar 2024 17:08:35 -0800 Subject: [PATCH 1/2] use [data copy] to be extra safe --- PINFuture/Classes/Categories/NSURLSession+PINFuture.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PINFuture/Classes/Categories/NSURLSession+PINFuture.m b/PINFuture/Classes/Categories/NSURLSession+PINFuture.m index 312d04c..31b2da1 100644 --- a/PINFuture/Classes/Categories/NSURLSession+PINFuture.m +++ b/PINFuture/Classes/Categories/NSURLSession+PINFuture.m @@ -25,7 +25,7 @@ - (PINNSURLSessionDataTaskAndResult *)pinfuture_dataTaskWithRequest:(NSURLReques PINFuture *future; future = [PINFuture withBlock:^(void (^ _Nonnull resolve)(id _Nonnull), void (^ _Nonnull reject)(NSError * _Nonnull)) { task = [self dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { - PINNSURLSessionDataTaskResult *result = [PINNSURLSessionDataTaskResult resultWithData:data response:response error:error]; + PINNSURLSessionDataTaskResult *result = [PINNSURLSessionDataTaskResult resultWithData:[data copy] response:response error:error]; resolve(result); }]; task.priority = priority; From 531b653f13190e91e5c0aeb502f5e8c77d920cde Mon Sep 17 00:00:00 2001 From: Liang Ma Date: Mon, 11 Mar 2024 13:46:07 -0700 Subject: [PATCH 2/2] mark data property with copy instead --- PINFuture/Classes/Categories/NSURLSession+PINFuture.m | 2 +- PINFuture/Classes/Categories/PINNSURLSessionDataTaskResult.h | 2 +- PINFuture/Classes/Categories/PINNSURLSessionDataTaskResult.m | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PINFuture/Classes/Categories/NSURLSession+PINFuture.m b/PINFuture/Classes/Categories/NSURLSession+PINFuture.m index 31b2da1..312d04c 100644 --- a/PINFuture/Classes/Categories/NSURLSession+PINFuture.m +++ b/PINFuture/Classes/Categories/NSURLSession+PINFuture.m @@ -25,7 +25,7 @@ - (PINNSURLSessionDataTaskAndResult *)pinfuture_dataTaskWithRequest:(NSURLReques PINFuture *future; future = [PINFuture withBlock:^(void (^ _Nonnull resolve)(id _Nonnull), void (^ _Nonnull reject)(NSError * _Nonnull)) { task = [self dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { - PINNSURLSessionDataTaskResult *result = [PINNSURLSessionDataTaskResult resultWithData:[data copy] response:response error:error]; + PINNSURLSessionDataTaskResult *result = [PINNSURLSessionDataTaskResult resultWithData:data response:response error:error]; resolve(result); }]; task.priority = priority; diff --git a/PINFuture/Classes/Categories/PINNSURLSessionDataTaskResult.h b/PINFuture/Classes/Categories/PINNSURLSessionDataTaskResult.h index a59a7de..c8e8ef7 100644 --- a/PINFuture/Classes/Categories/PINNSURLSessionDataTaskResult.h +++ b/PINFuture/Classes/Categories/PINNSURLSessionDataTaskResult.h @@ -14,7 +14,7 @@ NS_ASSUME_NONNULL_BEGIN @interface PINNSURLSessionDataTaskResult : NSObject @property (nonatomic, readonly) NSData * _Nullable data; -@property (nonatomic, readonly) NSURLResponse * _Nullable response; +@property (nonatomic, copy, readonly) NSURLResponse * _Nullable response; @property (nonatomic, readonly) NSError * _Nullable error; + (instancetype)resultWithData:(NSData * _Nullable)data diff --git a/PINFuture/Classes/Categories/PINNSURLSessionDataTaskResult.m b/PINFuture/Classes/Categories/PINNSURLSessionDataTaskResult.m index 276009c..8cd6180 100644 --- a/PINFuture/Classes/Categories/PINNSURLSessionDataTaskResult.m +++ b/PINFuture/Classes/Categories/PINNSURLSessionDataTaskResult.m @@ -11,7 +11,7 @@ NS_ASSUME_NONNULL_BEGIN @interface PINNSURLSessionDataTaskResult () -@property (nonatomic) NSData * _Nullable data; +@property (nonatomic, copy) NSData * _Nullable data; //intentionally use copy as the network data might be NSMutableData under the hood @property (nonatomic) NSURLResponse * _Nullable response; @property (nonatomic) NSError * _Nullable error; @end