Maison > Questions et réponses > le corps du texte
我的代码是这样的:
[self.collectionView performBatchUpdates:^{
[self.collectionView deleteItemsAtIndexPaths:deletedIndexpathes];
if (emptySections.count > 0 ) { // delete empty sections
[self.sectionNames removeObjectsAtIndexes:emptySections];
[self.collectionView deleteSections:emptySections];
}
} completion:nil];
根据我的理解, self对要执行的block是强引用,而block里面又对self进行了操作, 所以我觉得这里存在memory Cycle , 应该用weakSelf替换block里面的self,但是我用leak进行测试的时候并没有显示内存泄漏, 搜了网上的类似代码,也没有用weakSelf替换, 这里不存在内存泄漏的问题吗?
PHPz2017-04-17 17:31:49
Le soi est-il une référence forte au bloc à exécuter ? Pas nécessairement. Dans votre exemple, block est simplement passé en paramètre à la méthode performBatchUpdates de collectionView. CollectionView ne contient pas de référence à block (je n'ai pas le code source, mais je peux deviner que collectionView n'a pas besoin de contenir de bloc. ), juste exécuté en tant que variable locale. À moins que collectionView n'ait un attribut fort, le bloc est attribué à cet attribut fort dans performBatchUpdates, de sorte que collectionView contienne une référence forte au bloc.