如何处理异步sendMessage调用?

时间:2019-03-19 11:58:22

标签: ios sendmessage watch-os watchconnectivity

我的应用使用sendMessage(message:replyHandler:errorHandler:)与它的配套应用(iOS或watchOS)进行通信。

我的理解是,调用此函数后,必须等到完成为止,即直到调用replyHandlererrorHandler为止,然后才能再次调用sendMessage

就我而言,sendMessage可以被多个异步事件调用。因此,必须在正在进行的sendMessage尚未完成的同时将呼叫排队,并且sendMessage完成时每个最旧的呼叫都必须出队。

我可以想象建立一个将函数参数(messagereplyHandlererrorHandler)存储为属性的类,并定义一个以元素为对象的fifo队列,因此每次调用replyHandlererrorHandler时,一个对象就会出队并以sendMessage的身份执行。

但是,这对我来说似乎有点尴尬。有没有更简单的方法来解决问题?

编辑:

也许这样的排队是WatchKit自动完成的?我在文档中找不到任何内容。

1 个答案:

答案 0 :(得分:0)

在调用sendMessage(message:replyHandler:errorHandler:)之前,我运行了几个名为replyHandler的测试,并且一切正常,即,当我停止发送消息时,其余的ReplyHandler被调用了。 因此,显然sendMessage调用在内部排队,而不必在乎。