UITableView重新加载数据不';不行?

UITableView重新加载数据不';不行?,uitableview,Uitableview,我试图为一个IM应用程序编写一个测试演示,因此我设计了一个简单的用户界面来与其他好友聊天:当我发送消息时,我将重新加载UITableView,以显示与接收消息相同的消息。 问题是,当我发送消息时,调用reloadData方法后,UITableView将刷新,但当我收到消息时,它根本不工作,我必须下拉或向上拉动UITableView,然后它将刷新。 我设置了dataSource和UITableView委托,并将IBOutlet属性与nib文件连接起来,在调用reloadData之前检查了IBOut

我试图为一个IM应用程序编写一个测试演示,因此我设计了一个简单的用户界面来与其他好友聊天:当我发送消息时,我将重新加载UITableView,以显示与接收消息相同的消息。 问题是,当我发送消息时,调用reloadData方法后,UITableView将刷新,但当我收到消息时,它根本不工作,我必须下拉或向上拉动UITableView,然后它将刷新。 我设置了dataSource和UITableView委托,并将IBOutlet属性与nib文件连接起来,在调用reloadData之前检查了IBOutlet属性的值(它包含一个有效值),并且检查了dataSource的值(当我收到一条消息时,它的值已更改,并且插入了一条消息)。
所以,请告诉我它到底出了什么问题?

非常感谢@Tim。正如您所解释的,我理解了原因,我发现receive message方法是由子线程调用的,因此将我的源代码更改为:

dispatch_async(dispatch_get_main_queue(), ^{
        [self.tv_chat_records reloadData];
    });

它起作用了

您确定正在主线程上调用
reloadData
?所有UI操作都应该从主线程调用,否则会发生意外情况。非常感谢。正如您所解释的那样,我发现接收消息方法是由子线程调用的,因此将我的源代码更改为:小心在块中使用
self
。这可能导致保留周期,从而导致内存泄漏。在使用异步块时,通常最好使用弱自模式。