RN调用iOS方法,执行延时

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];
  })
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容