我有一个NSCollectionView
指定为我的数据源和我的代表。
我有两个问题:
与其使用该方法,不如
registerClass
尝试使用带有(非零)protoNib 方法的 3 行注释代码来注册,NSCollectionView
原因theItem
是始终为 nil。使用类注册表选项,一切正常。但是,如果我删除
willDisplayItem
和didEndDisplayingItem
存根,系统在第一次调用时会占用大量内存itemForRepresentedObjectAtIndexPath
(对这两个存根有数千次内部调用)并最终崩溃。Instruments显示由. _@autoreleasepool content items
AppKit
知道为什么会发生这种情况吗?
-(void)awakeFromNib {
[self registerClass:[MECollectionViewItem class] forItemWithIdentifier:@"EntityItem"];
// NSString *nibName = NSStringFromClass([MECollectionViewItem class]);
// NSNib *protoNib = [[NSNib alloc] initWithNibNamed:nibName bundle:nil];
// [self registerNib:protoNib forItemWithIdentifier:@"EntityItem"];
__weak typeof(self) weakSelf = self;
[self setDelegate:weakSelf];
[self setDataSource:weakSelf];
...
}
- (MECollectionViewItem *)collectionView:(NSCollectionView *)collectionView
itemForRepresentedObjectAtIndexPath:(NSIndexPath *)indexPath;
{
MECollectionViewItem *theItem = [self makeItemWithIdentifier:@"EntityItem"
forIndexPath:indexPath];
return theItem;
}
-(void)collectionView:(NSCollectionView *)collectionView
willDisplayItem:(NSCollectionViewItem *)item
forRepresentedObjectAtIndexPath:(NSIndexPath *)indexPath
{
}
-(void)collectionView:(NSCollectionView *)collectionView
didEndDisplayingItem:(nonnull NSCollectionViewItem *)item
forRepresentedObjectAtIndexPath:(nonnull NSIndexPath *)indexPath
{
}