美文网首页
RN调用iOS方法,执行延时

RN调用iOS方法,执行延时

作者: 我叫没名字啊 | 来源:发表于2017-08-14 18:53 被阅读191次

Q:

公司的iOS项目是RN写的,但有时不免还是需要调用一些iOS原生的功能,比如调用iOS系统弹框等。RN调用iOS方法参考该链接
我iOS开放了个方法给RN,用于吊起iOS原生alert,可是我发现有延时,很久之后弹框才弹出来。


A:

后来调试发现,RN调用iOS的方法时,另开了线程,没在主线程,所以,iOS内的方法执行有延迟。
和朋友讨论后,他给了个宏,安全获取主线程执行。哈哈哈,此处@奔跑的炸鸡,并献上炸鸡,以示感谢🍗。OK,代码如下👇:

/**
 添加同步任务到主线程
 */
#define dispatch_main_sync_safe(block)\
if ([NSThread isMainThread]) {\
block();\
} else {\
dispatch_sync(dispatch_get_main_queue(), block);\
}

使用eg:

+ (void)alertShowMsg:(NSString *)msg
{
  dispatch_main_sync_safe(^{
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:nil message:msg delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil];
    [alert show];
  })
}

相关文章

网友评论

      本文标题:RN调用iOS方法,执行延时

      本文链接:https://www.haomeiwen.com/subject/ojfprxtx.html