属性类型“id”与从“UIToolbar”警告继承的类型“id”不兼容

时间:2013-10-09 14:24:14

标签: ios

我刚刚安装了xcode 5,现在我收到了这个警告。我以前从未见过它。我的应用程序运行良好,但我讨厌看到一个警告。有谁知道这是什么以及如何解决它? 感谢

属性类型'id'与从'UIToolbar'继承的类型'id'不兼容

3 个答案:

答案 0 :(得分:17)

很难从缺乏背景来判断,但这似乎是Syntax for resolving incompatible property type on inherited delegate的重复

问题很可能是您正在创建一个具有相同名称但附加了不同协议的新属性。

例如,UIToolBar具有以下属性:

@property(nonatomic, assign) id<UIToolbarDelegate> delegate;

如果您要在类中声明以下内容,则会生成此警告,因为这两个属性具有不同的协议:

@property(nonatomic, assign) id<MyBetterDelegate> delegate;

有两种方法可以解决这个问题。您可以修改协议以继承其他协议:

@protocol MyBetterDelegate<UIToolbarDelegate>
...

或者您可以修改属性定义以捕获这两个协议:

@property(nonatomic, assign) id<MyBetterDelegate, UIToolbarDelegate> delegate;

答案 1 :(得分:0)

是的,因为您可能在名为delegate的类中声明了一个id属性,而UIToolbar具有一个具有相同名称的属性ID。只需更改类的名称,例如myClassDelegate,它就会清除警告。

Syntax for resolving incompatible property type on inherited delegate

答案 2 :(得分:-1)

您不应该在对象中使用“id”作为属性 - 它是为目标C对象保留的。

将其改为类似“toolbarId”的东西 - 比没事。