From 14df0b2a787402cb5a25fd0c3c1899e5381a5da2 Mon Sep 17 00:00:00 2001 From: Valentin Shergin Date: Tue, 15 Oct 2019 16:12:53 -0700 Subject: [PATCH] Fabric: Using `wrapManagedObject` in `RCTImageManager` instead of manual casting Summary: Hiding casting madness and complexity behind a helper function to avoid bugs and improve maintainability. Reviewed By: sammy-SC Differential Revision: D17923549 fbshipit-source-id: 105891d85b0412fa4a17d7ae8a9e156fc1b151fb --- React/Fabric/RCTImageResponseObserverProxy.mm | 3 ++- .../fabric/imagemanager/platform/ios/RCTImageManager.mm | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/React/Fabric/RCTImageResponseObserverProxy.mm b/React/Fabric/RCTImageResponseObserverProxy.mm index ce4e2253cc2..2fb0f031e0c 100644 --- a/React/Fabric/RCTImageResponseObserverProxy.mm +++ b/React/Fabric/RCTImageResponseObserverProxy.mm @@ -9,6 +9,7 @@ #import #import +#import namespace facebook { namespace react { @@ -20,7 +21,7 @@ RCTImageResponseObserverProxy::RCTImageResponseObserverProxy(void *delegate) void RCTImageResponseObserverProxy::didReceiveImage(ImageResponse const &imageResponse) const { - UIImage *image = (__bridge UIImage *)imageResponse.getImage().get(); + UIImage *image = (UIImage *)unwrapManagedObject(imageResponse.getImage()); auto this_ = this; dispatch_async(dispatch_get_main_queue(), ^{ [delegate_ didReceiveImage:image fromObserver:this_]; diff --git a/ReactCommon/fabric/imagemanager/platform/ios/RCTImageManager.mm b/ReactCommon/fabric/imagemanager/platform/ios/RCTImageManager.mm index c319cd30d56..b294316cdf7 100644 --- a/ReactCommon/fabric/imagemanager/platform/ios/RCTImageManager.mm +++ b/ReactCommon/fabric/imagemanager/platform/ios/RCTImageManager.mm @@ -8,6 +8,7 @@ #import "RCTImageManager.h" #import +#import #import #import @@ -65,8 +66,7 @@ using namespace facebook::react; } if (image && !error) { - auto imageResponse = ImageResponse(std::shared_ptr((__bridge_retained void *)image, CFRelease)); - observerCoordinator->nativeImageResponseComplete(std::move(imageResponse)); + observerCoordinator->nativeImageResponseComplete(ImageResponse(wrapManagedObject(image))); } else { observerCoordinator->nativeImageResponseFailed(); }