7

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

属性类型“id”与继承自“UIToolbar”的类型“id”不兼容

4

3 回答 3

18

很难从缺少上下文中分辨出来,但这似乎是用于解决继承委托上不兼容属性类型的语法的副本

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

例如,UIToolBar具有以下属性:

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

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

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

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

@protocol MyBetterDelegate<UIToolbarDelegate>
...

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

@property(nonatomic, assign) id<MyBetterDelegate, UIToolbarDelegate> delegate;
于 2013-10-09T16:06:03.257 回答
0

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

解析继承委托上不兼容的属性类型的语法

于 2013-10-09T14:59:59.833 回答
-1

你不应该在你的对象中使用“id”作为属性——它是为客观 C 对象保留的。

将其更改为“toolbarId”之类的东西 - 就可以了。

于 2013-10-09T14:30:17.860 回答