我目前正在使用
Swift编写iOS应用程序,我在Objective C中使用了JSQMessages和JSQSystemSoundplayer之类的东西.
当我在我的代码中介绍它们时,我使用了Xcode 6.2,它运行得很好.
我下载了Xcode 6.3.4以使用Swift 1.2,但现在我有40个警告:
“属性类型”JSQMessagesCollectionView“与类型”UICollectionView“不兼容,继承自”UICollectionViewLayout“”
非常感谢
解决方法
在评论之后,这里是对此警告的解释.
Xcode 6.3有一个更新的编译器工具链,它更严格,因此你会看到更多的警告,包括这个.
这里,类JSQMessagesCollectionViewFlowLayout声明一个属性,其定义与其超类的定义冲突:
@property (readonly,nonatomic) JSQMessagesCollectionView *collectionView;
然而,在超类UICollectionViewLayout中,它被声明为:
@property(nonatomic,readonly) UICollectionView *collectionView;
Objective C不支持属性covariance,而这种覆盖是Jesse对语言的错误使用. JSQMessagesCollectionViewFlowLayout类应该公开一个属于子类类型的附加属性.