执行瞄准需要太长时间

时间:2014-04-29 08:24:36

标签: ios objective-c performance uitableview segue

我通过完成方法接收数据异步。 完成触发后,我将数据传递给新的tableviewcontroller

但是表视图控制器需要花费太多时间来加载。数据是一个包含多达25个对象的数组。所以没那么多。

要移动到新控制器,我使用在storyboard中创建的segue。

这是完成方法:

{
    if(receivedArray != nil)
    {
        searchResult = receivedArray;
        [self performSegueWithIdentifier:@"searchToDisplay" sender:self];
    }
}

当我调试并设置断点到prepareForSegue:sender:方法时,我会在不到一秒的时间内到达那里。

这里的方法:

if([segue.identifier isEqualToString:@"searchToDisplay"])
{
    BookingDisplayTableViewController *bookingVC = (BookingDisplayTableViewController *)segue.destinationViewController;
    bookingVC.bookings = [NSArray arrayWithArray:searchResult];

}

另外这里是BookingDisplayController的viewDidLoad方法。 viewWillAppear没有被覆盖。

- (void)viewDidLoad
{
    [super viewDidLoad];

    UINib *nib = [UINib nibWithNibName:@"BookingCellDesign" bundle:nil];
    [self.tableView registerNib:nib forCellReuseIdentifier:@"BookingCell"];

    self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"tableBackground.png"]];

    self.clearsSelectionOnViewWillAppear = NO;
}

我在这里无法解决性能问题......

我需要帮助。 :)

谢谢!

更新

所以我解决了这个问题。这是完成方法。

我通过dispatch_async获取了日期(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0)...和同步的NSMutableRequest。

我发送完成后发送同步请求。现在我将此代码放在dispath块中

dispatch_async(dispatch_get_main_queue(),
^{
   if(response)
   {
       [self removeLoadingView];
       if(bookingTemp.count > 0)
           completion(bookingTemp);
       else
           completion(nil);
   }

});

现在效果很好。

在我这样做之前我不明白,我调试并像现在一样到达完成块。但只有segue没有开始。

感谢您的帮助!

0 个答案:

没有答案