如果init在桥类中,则React Native - Timer函数不起作用

时间:2015-10-20 09:57:17

标签: ios react-native

我正在开发使用React Native框架开发的iPhone应用程序。一些函数是使用Swift实现的,并由本机桥类调用。

实用程序swift是桥类之一并调用上传队列类。上传队列将每30秒触发一次。

Utilities.swift:

@objc func doPostSignInRoutine(username: String, callback: RCTResponseSenderBlock) -> Void {
    UploadXfdfManager.start()
}

UploadXfdfManager.swift:

func start() {
   timer = NSTimer.scheduledTimerWithTimeInterval(self.scheduledTimer, target:self, selector: Selector("startUploadQueue"), userInfo: nil, repeats: true)
}

计时器功能" startUploadQueue"如果我在Utilities.swift中调用队列,则不会被触发,但如果在Utilities.swift之外调用队列,它将完美地工作。有关如何解决这个问题的任何想法?请指教。非常感谢。

1 个答案:

答案 0 :(得分:0)

问题是本机模块没有在主线程上运行。这就是计时器在原生桥类中工作的原因。

使用调用计时器功能的主线程

可以轻松解决问题
@objc func doPostSignInRoutine(username: String, callback: RCTResponseSenderBlock) -> Void {
    dispatch_async(dispatch_get_main_queue()) {
      UploadXfdfManager.start()
    }
}