1// Copyright 2018-present 650 Industries. All rights reserved.
2
3#import <EXUpdates/EXDeferredRCTRootView.h>
4
5@interface EXNoopUIView : UIView
6
7@end
8
9@implementation EXNoopUIView
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 EXDeferredRCTRootView
29
30#pragma clang diagnostic push
31#pragma clang diagnostic ignored "-Wobjc-designated-initializers"
32
33- (instancetype)initWithBridge:(RCTBridge *)bridge
34                    moduleName:(NSString *)moduleName
35             initialProperties:(NSDictionary *)initialProperties
36{
37  // RCTRootView throws an exception for default initializers
38  // and other designated initializers requires a real bridge.
39  // We use a trick here to initialize a NoopUIView and cast back to EXDeferredRCTRootView.
40  self = (EXDeferredRCTRootView *)[[EXNoopUIView alloc] initWithFrame:CGRectZero];
41  return self;
42}
43
44#pragma clang diagnostic pop
45
46@end
47
48