iOS,使用InsertRowsAndExpaths在UITableView中延迟显示:WithRowsAnimation:

iOS,使用InsertRowsAndExpaths在UITableView中延迟显示:WithRowsAnimation:,uitableview,nsoperationqueue,Uitableview,Nsoperationqueue,我有一个自定义的NSObject类,做一些FTP工作(显示、传输…) 这个FTP类有一个downloadFiles:方法,它在NSOperationQueue中启动 我希望该方法能够在UITableView中作为数据源提供一些结果。因此,我决定将这些结果委托给UITableViewController 因此,FTP类的协议: @protocol FTPDelegate; 然后,我将自定义UITableViewController声明为FTP类的委托: self.myFTP = (FTP *)

我有一个自定义的
NSObject
类,做一些FTP工作(显示、传输…)

这个FTP类有一个
downloadFiles:
方法,它在
NSOperationQueue
中启动

我希望该方法能够在
UITableView
中作为数据源提供一些结果。因此,我决定将这些结果委托给
UITableViewController

因此,FTP类的协议:

@protocol FTPDelegate;

然后,我将自定义
UITableViewController
声明为FTP类的委托:

self.myFTP = (FTP *) [self FTPManager];

self.myFTP.delegate = self;
因此,当FTP类的downloadFiles:方法想要在
UITableView
中显示一些消息时,它调用:

[[self delegate] FTPMessageReceived:@"dir created"];
UITableViewController
实现该方法:

-(void)FTPMessageReceived: (NSString *)message {
  NSUInteger index;
  NSArray * indexArray;
  [[self logLine] addObject: message]; // logLine is my data source
  index = [[self logLine] count]-1;
  NSLog(@"%u", index);
  indexArray = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:index inSection:0]];
  [[self logView] insertRowsAtIndexPaths:indexArray withRowAnimation:UITableViewRowAnimationRight];
}
插入可以工作,但是新行需要大约5秒钟才能显示在
UITableView

当我在
tableView:cellforrowatinexpath:
方法中放入一些日志时,它会立即显示出来

当我将
FTPMessageReceived
代码放入按钮(例如,
UITableView
立即显示新行


有什么建议吗?

听起来像是在后台线程上调用了
FTPMessageReceived:
。尝试使用以下命令在主线程上调用它:

dispatch_async(dispatch_get_main_queue(), ^{
    [[self delegate] FTPMessageReceived:@"dir created"];
});

听起来像是在后台线程上调用了
FTPMessageReceived:
。尝试使用以下命令在主线程上调用它:

dispatch_async(dispatch_get_main_queue(), ^{
    [[self delegate] FTPMessageReceived:@"dir created"];
});
dispatch_async(dispatch_get_main_queue(), ^{
    [[self delegate] FTPMessageReceived:@"dir created"];
});