feat:fix command view cannot find view,let find on UI Thread

This commit is contained in:
pengfei.zhou
2020-03-23 13:23:04 +08:00
committed by osborn
parent 7408d9cfed
commit 2046baa23d
2 changed files with 92 additions and 83 deletions

View File

@@ -50,24 +50,26 @@ - (void)render:(NSDictionary *)argument withPromise:(DoricPromise *)promise {
}
- (void)command:(NSDictionary *)argument withPromise:(DoricPromise *)promise {
NSArray *viewIds = argument[@"viewIds"];
id args = argument[@"args"];
NSString *name = argument[@"name"];
DoricViewNode *viewNode = nil;
for (NSString *viewId in viewIds) {
if (!viewNode) {
viewNode = [self.doricContext targetViewNode:viewId];
} else {
if ([viewNode isKindOfClass:[DoricSuperNode class]]) {
viewNode = [((DoricSuperNode *) viewNode) subNodeWithViewId:viewId];
dispatch_async(dispatch_get_main_queue(), ^{
NSArray *viewIds = argument[@"viewIds"];
id args = argument[@"args"];
NSString *name = argument[@"name"];
DoricViewNode *viewNode = nil;
for (NSString *viewId in viewIds) {
if (!viewNode) {
viewNode = [self.doricContext targetViewNode:viewId];
} else {
if ([viewNode isKindOfClass:[DoricSuperNode class]]) {
viewNode = [((DoricSuperNode *) viewNode) subNodeWithViewId:viewId];
}
}
}
}
if (!viewNode) {
[promise reject:@"Cannot find opposite view"];
} else {
[self findClass:[viewNode class] target:viewNode method:name promise:promise argument:args];
}
if (!viewNode) {
[promise reject:@"Cannot find opposite view"];
} else {
[self findClass:[viewNode class] target:viewNode method:name promise:promise argument:args];
}
});
}
- (id)createParamWithMethodName:(NSString *)method promise:(DoricPromise *)promise argument:(id)argument {