diff --git a/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm b/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm index 763f7a3d8..dad8a5f49 100644 --- a/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +++ b/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm @@ -129,8 +129,8 @@ using namespace facebook::react; // `nativeId` if (oldViewProps.nativeId != newViewProps.nativeId) { - self.nativeId = [NSString stringWithCString:newViewProps.nativeId.c_str() - encoding:NSASCIIStringEncoding]; + self.nativeId = RCTNSStringFromString(newViewProps.nativeId); + } } } @@ -165,7 +165,7 @@ using namespace facebook::react; - (BOOL)didActivateAccessibilityCustomAction:(UIAccessibilityCustomAction *)action { - _eventEmitter->onAccessibilityAction([action.name cStringUsingEncoding:NSASCIIStringEncoding]); + _eventEmitter->onAccessibilityAction(RCTStringFromNSString(action.name)); return YES; } diff --git a/React/Fabric/Mounting/RCTMountingManager.mm b/React/Fabric/Mounting/RCTMountingManager.mm index 8df452c0c..5aa0fa501 100644 --- a/React/Fabric/Mounting/RCTMountingManager.mm +++ b/React/Fabric/Mounting/RCTMountingManager.mm @@ -16,6 +16,7 @@ #import "RCTMountItemProtocol.h" #import "RCTCreateMountItem.h" +#import "RCTConversions.h" #import "RCTDeleteMountItem.h" #import "RCTInsertMountItem.h" #import "RCTRemoveMountItem.h" @@ -46,8 +47,7 @@ using namespace facebook::react; for (auto instruction : instructions) { switch (instruction.getType()) { case TreeMutationInstruction::Creation: { - NSString *componentName = [NSString stringWithCString:instruction.getNewChildNode()->getComponentName().c_str() - encoding:NSASCIIStringEncoding]; + NSString *componentName = RCTNSStringFromString(instruction.getNewChildNode()->getComponentName(), NSASCIIStringEncoding); RCTCreateMountItem *mountItem = [[RCTCreateMountItem alloc] initWithComponentName:componentName tag:instruction.getNewChildNode()->getTag()]; @@ -56,8 +56,7 @@ using namespace facebook::react; } case TreeMutationInstruction::Deletion: { - NSString *componentName = [NSString stringWithCString:instruction.getOldChildNode()->getComponentName().c_str() - encoding:NSASCIIStringEncoding]; + NSString *componentName = RCTNSStringFromString(instruction.getOldChildNode()->getComponentName(), NSASCIIStringEncoding); RCTDeleteMountItem *mountItem = [[RCTDeleteMountItem alloc] initWithComponentName:componentName tag:instruction.getOldChildNode()->getTag()]; diff --git a/React/Fabric/RCTConversions.h b/React/Fabric/RCTConversions.h index 2fe12e105..10cb38fb8 100644 --- a/React/Fabric/RCTConversions.h +++ b/React/Fabric/RCTConversions.h @@ -11,6 +11,14 @@ #import #import +inline NSString *_Nullable RCTNSStringFromString(const std::string &string, const NSStringEncoding &encoding = NSUTF8StringEncoding) { + return [NSString stringWithCString:string.c_str() encoding:encoding]; +} + +inline std::string RCTStringFromNSString(NSString *string, const NSStringEncoding &encoding = NSUTF8StringEncoding) { + return [string cStringUsingEncoding:encoding]; +} + inline UIColor *_Nullable RCTUIColorFromSharedColor(const facebook::react::SharedColor &sharedColor) { return sharedColor ? [UIColor colorWithCGColor:sharedColor.get()] : nil; } diff --git a/React/Fabric/RCTScheduler.mm b/React/Fabric/RCTScheduler.mm index 0e1d5313b..ce1d3b420 100644 --- a/React/Fabric/RCTScheduler.mm +++ b/React/Fabric/RCTScheduler.mm @@ -29,7 +29,7 @@ public: void schedulerDidRequestPreliminaryViewAllocation(ComponentName componentName) override { RCTScheduler *scheduler = (__bridge RCTScheduler *)scheduler_; - [scheduler.delegate schedulerDidRequestPreliminaryViewAllocationWithComponentName:[NSString stringWithCString:componentName.c_str() encoding:NSASCIIStringEncoding]]; + [scheduler.delegate schedulerDidRequestPreliminaryViewAllocationWithComponentName:RCTNSStringFromString(componentName, NSASCIIStringEncoding)]; } private: