如何在应用程序主线程中添加react-native本机模块

时间:2016-08-29 11:01:11

标签: react-native

我正在使用第三方sdk编写一个react-native本机模块,当我初始化sdk时,它报告错误“xxxx只能从当时应用程序的主线程使用”。 如何在应用程序的主线程中创建本机模块?

1 个答案:

答案 0 :(得分:1)

简单的答案是,如果你有任何需要在主线程上运行的代码,你可以在Objective-C中使用GCD来确保。

Key0
Key0[0].Key1
Key0[0].Key2
Key0[0].Key3
Key0[0].Key4
Key0[0].Key4.subKey1
Key0[0].Key5
Key0[0].Key5.subKey1
Key0[0].Key5.subKey2
Key0[0].Key5.subKey3
Key0[0].Key5.subKey4
Key0[0].Key6
Key0[0].Key7
Key0[0].Key7[0].subKey1
Key0[0].Key7[0].subKey2
Key0[0].Key7[1].subKey1
Key0[0].Key7[1].subKey2
Key0[0].Key7[2].subKey1
Key0[0].Key7[2].subKey2
Key0[0].Key7[3].subKey1
Key0[0].Key7[3].subKey2
Key0[1].Key1
Key0[1].Key2
Key0[1].Key3
Key0[1].Key4
Key0[1].Key4.subKey1
Key0[1].Key5
Key0[1].Key5.subKey1
Key0[1].Key5.subKey2
Key0[1].Key5.subKey3
Key0[1].Key5.subKey4
Key0[1].Key6
Key0[1].Key7
Key0[1].Key7[0].subKey1
Key0[1].Key7[0].subKey2
Key0[1].Key7[1].subKey1
Key0[1].Key7[1].subKey2
Key0[1].Key7[2].subKey1
Key0[1].Key7[2].subKey2
Key0[1].Key7[3].subKey1
Key0[1].Key7[3].subKey2

默认情况下,React Native在单独的队列中运行所有代码。为了指定运行模块的队列,React Native提供dispatch_async(dispatch_get_main_queue(), ^{ // Code that needs to be run on the main thread. }); 函数。例如,您可以指定模块中所有代码在主线程上运行:

methodQueue

例如,如果您的模块正在创建本机UI组件,那么这将非常有用,并且必须广泛调用UIKit方法。