Macos NSCollectionView不支持';似乎不需要注册它的item类

Macos NSCollectionView不支持';似乎不需要注册它的item类,macos,cocoa,appkit,nscollectionview,nscollectionviewitem,Macos,Cocoa,Appkit,Nscollectionview,Nscollectionviewitem,当我创建NSCollectionView UI时 第一次,我使用 self.cv.register(NSNib.init(nibNamed: "ContentItemOneClass", bundle: nil), forItemWithIdentifier: "ContentItemOneClass") 我添加了更多的集合视图,忘记了像这样调用 self.cv.register(NSNib.init(nibNamed: "ContentItemTwoClass", bundle: nil),

当我创建NSCollectionView UI时

第一次,我使用

self.cv.register(NSNib.init(nibNamed: "ContentItemOneClass", bundle: nil), forItemWithIdentifier: "ContentItemOneClass")
我添加了更多的集合视图,忘记了像这样调用

self.cv.register(NSNib.init(nibNamed: "ContentItemTwoClass", bundle: nil), forItemWithIdentifier: "ContentItemTwoClass")
但是,
collectionView(uu:itemForRepresentedObjectAt:)
makeItem(带有标识符:“ContentItemTwoClass”,for:indexath)
似乎工作得很好

现在我想知道注册类是必要的还是可以删除


谢谢。

苹果有一个名为的示例应用程序,演示了现代(即10.11+)
NSCollectionView的使用。在文件
AAPLBrowserWindowController.m
中的
collectionView:ItemForRepresentedObjectIndexPath:
方法中,有以下注释:

消息返回到collectionView,要求它制作一个与给定项关联的@“幻灯片”项。collectionView将首先检查NSNib或item类是否已使用该名称注册(通过-Registernb:forItemWithIdentifier:或-registerClass:forItemWithIdentifier:)。否则,collectionView将搜索名为“Slide”的.nib文件。由于我们的.nib文件名为“Slide.nib”,因此无需注册


虽然我没有看到文档中明确提到这一点,但这表明只要
.xib
名称与标识符匹配(并且文件中只有一个
NSCollectionViewItem
或的子类),那么就不需要注册。

如果您的收藏视图项目xib文件知道相应的收藏视图项目swift文件是什么,答案是否。我删除了所有注册代码,我的应用程序仍然可以正常运行。我猜如果xib文件名和类文件(或名称)相同,那么注册代码可能不是必需的代码。这听起来好像如果我使用注册,我可能会有一点性能优势。然而,我宁愿选择简单的方式来编写代码,而不是从中获益。谢谢~