这是什么意思:“属性types”JSQMessagesCollectionView“与inheritance自”UICollectionViewLayout“types的”UICollectionView“不兼容

我目前在Swift中编写了一个iOS应用程序,并且在Objective C中使用了一些类似JSQMessages和JSQSystemSoundPlayer的东西。

当我在代码中介绍它们时,我使用了Xcode 6.2,并且它的工作非常完美。 我下载了Xcode 6.3.4来使用Swift 1.2,但是现在我有40个警告:

“属性types”JSQMessagesCollectionView“与inheritance自”UICollectionViewLayout“的types”UICollectionView“不兼容

我已经创build了一个桥接头来调用Objective C文件。

非常感谢

在评论之后,这里是对这个警告是什么的解释。

Xcode 6.3有一个更新的编译器工具链,这是更严格的,因此你会看到更多的警告,包括这一个。

在这里, JSQMessagesCollectionViewFlowLayout类声明了一个定义与其超类定义冲突的属性:

 @property (readonly, nonatomic) JSQMessagesCollectionView *collectionView; 

而在超类UICollectionViewLayout ,声明为:

 @property(nonatomic, readonly) UICollectionView *collectionView; 

目标C不支持属性协变 ,而这个重写是Jesse对该语言的不正确使用。 JSQMessagesCollectionViewFlowLayout类应该公开一个子types的附加属性。

为了消除这个警告,只需删除@property (readonly, nonatomic) JSQMessagesCollectionView *collectionView; 从它的类JSQMessagesCollectionViewFlowLayout.hJSQMessagesCollectionViewFlowLayout.m