1// Copyright 2018-present 650 Industries. All rights reserved.
2
3#import <EXDevLauncher/EXDevLauncherDeferredRCTBridge.h>
4
5@interface EXDevLauncherNoopNSObject : NSObject
6
7@end
8
9@implementation EXDevLauncherNoopNSObject
10
11- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
12{
13  NSMethodSignature *signature = [super methodSignatureForSelector:aSelector];
14  if (!signature) {
15    signature = [NSMethodSignature signatureWithObjCTypes:"@@:"];
16  }
17  return signature;
18}
19
20- (void)forwardInvocation:(NSInvocation *)anInvocation
21{
22  id nilPtr = nil;
23  [anInvocation setReturnValue:&nilPtr];
24}
25
26@end
27
28@implementation EXDevLauncherDeferredRCTBridge
29
30#pragma clang diagnostic push
31#pragma clang diagnostic ignored "-Wobjc-designated-initializers"
32
33- (instancetype)initWithDelegate:(id<RCTBridgeDelegate>)delegate launchOptions:(NSDictionary *)launchOptions
34{
35  // RCTBridge throws an exception for default initializer
36  // and other designated initializers will create a real bridge.
37  // We use a trick here to initialize a NoopNSObject and cast back to EXDevLauncherDeferredRCTBridge.
38  self = (EXDevLauncherDeferredRCTBridge *)[EXDevLauncherNoopNSObject new];
39  return self;
40}
41
42#pragma clang diagnostic pop
43
44@end
45