RN调用iOS方法,执行延时

2017-08-14  本文已影响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];
  })
}
上一篇 下一篇

猜你喜欢

热点阅读