Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSBlockOperations导致内存泄漏,并导致Denit从未被调用[swift]_Ios_Swift_Nsfetchedresultscontroller_Nsoperation_Nsblockoperation - Fatal编程技术网

Ios NSBlockOperations导致内存泄漏,并导致Denit从未被调用[swift]

Ios NSBlockOperations导致内存泄漏,并导致Denit从未被调用[swift],ios,swift,nsfetchedresultscontroller,nsoperation,nsblockoperation,Ios,Swift,Nsfetchedresultscontroller,Nsoperation,Nsblockoperation,这是我将邮件插入我的收藏视图的代码 我需要块操作,这样当一条消息被延迟时,它可以被插入到块中 问题是每次我关闭viewController打印(“已完成”)副本时。这意味着我有内存泄漏 除非我删除块操作,否则不会调用deinit,当我离开viewController时,如何释放块操作?请参阅,它可能会有所帮助!请参阅,这可能会有所帮助!看见 var blockOperations = [NSBlockOperation]() func controller(controller: NSFetch

这是我将邮件插入我的收藏视图的代码

我需要块操作,这样当一条消息被延迟时,它可以被插入到块中

问题是每次我关闭
viewController
打印(“已完成”)副本时。这意味着我有内存泄漏

除非我删除块操作,否则不会调用
deinit
,当我离开
viewController
时,如何释放块操作?

请参阅,它可能会有所帮助!请参阅,这可能会有所帮助!看见
var blockOperations = [NSBlockOperation]()
func controller(controller: NSFetchedResultsController, didChangeObject anObject: AnyObject, atIndexPath indexPath: NSIndexPath?, forChangeType type: NSFetchedResultsChangeType, newIndexPath: NSIndexPath?) {

    if type == .Insert {
        blockOperations.append(NSBlockOperation(block: {
            self.collectionView?.insertItemsAtIndexPaths([newIndexPath!])

        }))
    }
}
    func controllerDidChangeContent(controller: NSFetchedResultsController) {
    collectionView?.performBatchUpdates({
        for operation in self.blockOperations {
            operation.start()

        }
        }, completion: { (completed) in
           print("completed")
    })

}