iOS 9和UICollectionView中奇怪的100%CPU使用率

iOS 9和UICollectionView中奇怪的100%CPU使用率,ios,uitableview,uicollectionview,ios9,Ios,Uitableview,Uicollectionview,Ios9,我有一个tableView,每个单元格中都有一个collectionView。有时,当我知道collectionView中有新数据时,我会在collectionView上调用reloadData()。大多数时候,这个例程都能正常工作,但有时会开始使用100%的CPU,内存使用量增加,GUI被阻塞,应用程序会崩溃。如果我不允许重新加载collectionView,那么所有工作都正常,只有collectionView中的内容无效。在iOS 8中,从cellforrowatinexpath调用relo

我有一个tableView,每个单元格中都有一个collectionView。有时,当我知道collectionView中有新数据时,我会在collectionView上调用
reloadData()
。大多数时候,这个例程都能正常工作,但有时会开始使用100%的CPU,内存使用量增加,GUI被阻塞,应用程序会崩溃。如果我不允许重新加载collectionView,那么所有工作都正常,只有collectionView中的内容无效。在iOS 8中,从
cellforrowatinexpath
调用
reloadData()
没有问题

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCellWithIdentifier("movie") as! MovieTableViewCell

    //..

    if cell.rcvc == nil {

        let cvfl = UICollectionViewFlowLayout()
        cvfl.scrollDirection = .Horizontal
        cell.rcvc = RatingCollectionViewController(collectionViewLayout: cvfl)

        self.addChildViewController(cell.rcvc!)
        let v = cell.viewWithTag(5)!
        v.addSubview(cell.rcvc!.view)
        cell.rcvc!.didMoveToParentViewController(self)
        cell.rcvc!.view.frame = v.bounds
    }

    cell.rcvc!.movie = movie

    if enableReloadRatingCollectionViews {

        cell.rcvc!.collectionView!.reloadData() // <--- if I comment, not crashes
    }

    return cell
}

我没有重新加载嵌套的
集合视图
,而是实现了一个
configureCell
方法,该方法重置单元格,并为我调用的所有可见单元格
configureCell
。这是我的解决方案,因此无限循环可以避免。

我没有重新加载嵌套的
collectionView
,而是实现了一个
configureCell
方法,该方法重置单元格,并为我调用的所有可见单元格
configureCell
。这是我的解决方案,因此无限循环可以避免。

我完全误解了您的问题,我没有看到重新加载是针对
UICollectionView
内部
UITableViewCell
。我肯定这里会有一些时间问题,但我之前的建议是不相关的。我很确定你的崩溃是由溢出堆栈的无限递归引起的。在我意识到调用
reloadData
是在一个完全不同的视图控制器上完成之前,我也这么想。OP在每个单元格内都有一个集合视图。我不确定您是否看到了,但您可能想看一看,因为它解释了可能与您正在做的事情相关的事情。嗯,堆栈跟踪中似乎没有第二方代码,甚至不是堆栈溢出。我完全误解了您的问题,我没有看到重新加载是针对
UICollectionView
内部的
UITableViewCell
。我肯定这里会有一些时间问题,但我之前的建议是不相关的。我很确定你的崩溃是由溢出堆栈的无限递归引起的。在我意识到调用
reloadData
是在一个完全不同的视图控制器上完成之前,我也这么想。OP在每个单元格内都有一个集合视图。我不确定您是否看到过,但您可能想看一看,因为它解释了可能与您正在做的事情相关的内容。嗯,堆栈跟踪中似乎没有第二方代码,甚至也不是堆栈溢出。
itemTableViewController!.tableView.reloadData()
for sv in collectionViews.allObjects {

    (sv as! UICollectionView).reloadData()
}