加速标签iOS中的文本更改

时间:2013-02-05 04:19:31

标签: iphone ios tcp nsstring

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

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

我的第一个方法就是这个

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

第二是

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

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

2 个答案:

答案 0 :(得分:5)

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

使用:

dispatch_async(dispatch_get_main_queue(), ^{
    self.label.text = myString;
});

答案 1 :(得分:1)

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

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

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