1
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")
    })

}

これは、コレクション ビューにメッセージを挿入するためのコードです。

メッセージが遅延したときにブロック案件に挿入できるように、ブロック操作が必要です。

viewController問題は、print("completed")重複を却下するたびに発生します。つまり、メモリリークがあります。

deinitブロック操作を削除しない限り、呼び出されることはありませviewControllerん。

4

0 に答える 0