美文网首页
MacOS NSCollectionViewItem 内存泄漏问

MacOS NSCollectionViewItem 内存泄漏问

作者: devileatapple | 来源:发表于2021-12-22 15:27 被阅读0次

    在Leaks中调试发现有自定义的NSCollectionView中调用系统方法collectionView makeItemWithIdentifier: 内存泄漏,

    CopyCoItem*cell=[collectionView makeItemWithIdentifier:@"xxx" forIndexPath:indexPath];

    最后的解决方案:创建一个list(下文中的_coItemList)专门管理对应的自定义的NSCollectionViewItem,取的时候直接取数组中的对象

    - (NSInteger)collectionView:(NSCollectionView*)collectionView numberOfItemsInSection:(NSInteger)section {

        return self.list.count;

    }

    - (NSCollectionViewItem*)collectionView:(NSCollectionView*)collectionView itemForRepresentedObjectAtIndexPath:(NSIndexPath*)indexPath API_AVAILABLE(macos(10.11)) {

    //    CopyCoItem *cell = [_coItemList objectAtIdx:indexPath.item];//需要保证不为空,_coItemList就是专门保存item的view,CopyCoItem为自定义的NSCollectionViewItem

    //上面的cell复用有一些问题,使用下面这个方式来获取自定义的NSCollectionViewItem,但是每次reload都会为空,重新创建

        CopyCoItem*cell = (CopyCoItem*)[collectionView itemAtIndexPath:indexPath];

        if(!cell) {

            cell=[self coItem];

        }

        CopyMo*mo = [_list objectAtIdx:indexPath.item];

        cell.mo= mo;

        returncell;

    }

    相关文章

      网友评论

          本文标题:MacOS NSCollectionViewItem 内存泄漏问

          本文链接:https://www.haomeiwen.com/subject/gxbqqrtx.html