2
  • 我的程序有效
    1. 使用 CocoaAsyncSocket (TCP) 发送字节
    2. 获取响应(字节数据)
    3. 将字节数组更改为有效数据(int / nsstring / etc)
    4. 用它更改标签文本(步骤 3)

我放了一个 NSLog 并观看了。日志显示几乎很快,我的功能(更改标签文本)运行良好。但是,我可以在大约 4~5 秒后在模拟器上看到更改标签的文本,然后调用函数。

我的第一种方法是这样

  • 获取字节数组 - 拆分为 nsdata - 更改为 nsstring - 输入数组 - 获取字符串 - 添加子字符串(如 '000%' 或 '000 sec') - 更改标签文本

第二是

  • 获取字节数组 - 拆分 - 更改为 nsstring - 调用函数(添加子字符串 - 更改标签文本)

嗯...我怎样才能提高它的变化速度?

4

2 回答 2

5

更改标签文本应该“几乎立即”发生,当它需要这么长时间时,通常是由于没有更新主线程上的标签文本。它是一个 UIKit 对象,因此只能在主线程上修改。

采用:

dispatch_async(dispatch_get_main_queue(), ^{
    self.label.text = myString;
});
于 2013-02-05T04:43:04.970 回答
1

从日历中以几乎相同的延迟获取事件时,我遇到了类似的问题。如果 Inafziger 的建议对您不起作用,我建议performSelectorOnMainThread:在“第 3 步”中使用并调用一种方法来更新您的标签。

[self performSelectorOnMainThread:@selector(yourMethodToUpdateLabels) withObject:nil waitUntilDone:NO];

它对我的情况很有用。希望能帮助到你。:)

于 2013-02-05T05:00:53.783 回答