fix:when onDestroy call native plugin

This commit is contained in:
pengfei.zhou
2020-04-23 17:42:32 +08:00
committed by osborn
parent 82fdd5e46c
commit 496c4c1838
8 changed files with 34 additions and 19 deletions

View File

@@ -21,10 +21,12 @@
//
#import <Foundation/Foundation.h>
#import "DoricRegistry.h"
NS_ASSUME_NONNULL_BEGIN
@interface DoricBridgeExtension : NSObject
@property (nonatomic,weak) DoricRegistry *registry;
- (id)callNativeWithContextId:(NSString *)contextId module:(NSString *)module method:(NSString *)method callbackId:(NSString *)callbackId argument:(id)argument;
@end

View File

@@ -34,11 +34,7 @@ @implementation DoricBridgeExtension
- (id)callNativeWithContextId:(NSString *)contextId module:(NSString *)module method:(NSString *)method callbackId:(NSString *)callbackId argument:(id)argument {
__strong DoricContext *context = [[DoricContextManager instance] getContext:contextId];
if (!context) {
return nil;
}
DoricRegistry *registry = context.driver.registry;
Class pluginClass = [registry acquireNativePlugin:module];
Class pluginClass = [self.registry acquireNativePlugin:module];
DoricNativePlugin *nativePlugin = context.pluginInstanceMap[module];
if (nativePlugin == nil) {
nativePlugin = [(DoricNativePlugin *) [pluginClass alloc] initWithContext:context];
@@ -72,6 +68,7 @@ - (id)findClass:(Class)clz target:(id)target context:(DoricContext *)context met
NSMethodSignature *methodSignature = [target methodSignatureForSelector:selector];
if (methodSignature) {
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:methodSignature];
[invocation retainArguments];
invocation.selector = selector;
invocation.target = target;
__weak __typeof__(self) _self = self;