add some api for doric context

This commit is contained in:
pengfei.zhou
2019-08-13 18:13:54 +08:00
parent 1ddbfcf8e4
commit ba2a90a6c1
6 changed files with 60 additions and 3 deletions

View File

@@ -8,6 +8,7 @@
#import "DoricContext.h"
#import "DoricContextManager.h"
#import "DoricRootNode.h"
#import "DoricConstant.h"
@implementation DoricContext
@@ -17,11 +18,16 @@ - (instancetype)initWithScript:(NSString *)script source:(NSString *)source {
_pluginInstanceMap = [[NSMutableDictionary alloc] init];
[[DoricContextManager instance] createContext:self script:script source:source];
_rootNode = [[DoricRootNode alloc] initWithContext:self];
_script = script;
_source = source;
_initialParams =[@{@"width":@(LAYOUT_MATCH_PARENT) ,@"height":@(LAYOUT_MATCH_PARENT)} mutableCopy];
[self callEntity:DORIC_ENTITY_CREATE,nil];
}
return self;
}
- (void)dealloc {
[self callEntity:DORIC_ENTITY_DESTROY,nil];
[[DoricContextManager instance] destroyContext:self];
}
@@ -36,7 +42,29 @@ - (DoricAsyncResult *)callEntity:(NSString *)method, ... {
- (DoricAsyncResult *)callEntity:(NSString *)method withArguments:(va_list)args {
return [self.driver invokeContextEntity:self.contextId method:method arguments:args];
}
- (DoricAsyncResult *)callEntity:(NSString *)method withArgumentsArray:(NSArray *)args {
return [self.driver invokeContextEntity:self.contextId method:method argumentsArray:args];
}
- (void)initContextWithWidth:(CGFloat)width height:(CGFloat)height {
[self.initialParams setValue:@(width) forKey:@"width"];
[self.initialParams setValue:@(height) forKey:@"height"];
[self callEntity:DORIC_ENTITY_INIT,self.initialParams,nil];
}
- (void)reload:(NSString *)script {
self.script = script;
[self.driver createContext:self.contextId script:script source:self.source];
[self callEntity:DORIC_ENTITY_INIT,self.initialParams,nil];
}
- (void)onShow {
[self callEntity:DORIC_ENTITY_SHOW,nil];
}
- (void)onHidden {
[self callEntity:DORIC_ENTITY_HIDDEN,nil];
}
@end