【问题标题】:What does it mean : "Property type "JSQMessagesCollectionView" is incompatible with type "UICollectionView", inherited from "UICollectionViewLayout"这是什么意思:“属性类型“JSQMessagesCollectionView”与类型“UICollectionView”不兼容,继承自“UICollectionViewLayout”
【发布时间】:2015-04-19 13:46:31
【问题描述】:

我目前正在用 Swift 编写一个 iOS 应用程序,我在 Objective C 中使用了一些东西,例如 JSQMessages 和 JSQSystemSoundPlayer。

当我在我的代码中引入它们时,我使用的是 Xcode 6.2,它运行良好。 我下载了 Xcode 6.3.4 以使用 Swift 1.2,但现在我有 40 个警告,例如:

“属性类型“JSQMessagesCollectionView”与类型“UICollectionView”不兼容,继承自“UICollectionViewLayout””

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

非常感谢

【问题讨论】:

  • 这里不适合提出这样的问题。您应该为此项目的 GitHub 跟踪器打开一个问题:github.com/jessesquires/JSQMessagesViewController
  • 这不是与 JSQMessages 相关的问题,我想知道,这个错误是什么意思(可能是我自己的代码,它适用于 Xcode 6.2,但不适用于 Xcode 6.3.4) ,谢谢狮子座
  • 我删除了反对票。我以为您是在抱怨警告,而不是想了解它,对此感到抱歉。看我的回答。
  • 如果有人知道这个问题请回答这个问题stackoverflow.com/questions/31153071/…

标签: ios objective-c xcode swift


【解决方案1】:

在 cmets 之后,这里是对这个警告的解释。

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

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

@property (readonly, nonatomic) JSQMessagesCollectionView *collectionView;

而在超类UICollectionViewLayout 中,它被声明为:

@property(nonatomic, readonly) UICollectionView *collectionView;

Objective C 不支持属性covariance,并且此覆盖是 Jesse 对该语言的错误使用。 JSQMessagesCollectionViewFlowLayout 类应该公开一个属于子类类型的附加属性。

【讨论】:

  • 非常感谢 Leo 的回答,如果我不清楚并且您认为我只是在抱怨,我很抱歉。
【解决方案2】:

要删除此警告,只需将 @property (readonly, nonatomic) JSQMessagesCollectionView *collectionView; 从其类 JSQMessagesCollectionViewFlowLayout.h 删除到 JSQMessagesCollectionViewFlowLayout.m

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 2011-10-14
    • 1970-01-01
    相关资源
    最近更新 更多