我刚刚安装了 xcode 5,现在我收到了这个警告。我以前从未见过它。我的应用程序运行良好,但我讨厌看到警告。有谁知道这是什么以及如何解决它?谢谢
属性类型“id”与继承自“UIToolbar”的类型“id”不兼容
我刚刚安装了 xcode 5,现在我收到了这个警告。我以前从未见过它。我的应用程序运行良好,但我讨厌看到警告。有谁知道这是什么以及如何解决它?谢谢
属性类型“id”与继承自“UIToolbar”的类型“id”不兼容
很难从缺少上下文中分辨出来,但这似乎是用于解决继承委托上不兼容属性类型的语法的副本
问题很可能是您正在创建一个名称相同但附加了不同协议的新属性。
例如,UIToolBar
具有以下属性:
@property(nonatomic, assign) id<UIToolbarDelegate> delegate;
如果您要在类中声明以下内容,则会生成此警告,因为这两个属性具有不同的协议:
@property(nonatomic, assign) id<MyBetterDelegate> delegate;
有两种方法可以解决这个问题。您可以修改您的协议以从其他协议继承:
@protocol MyBetterDelegate<UIToolbarDelegate>
...
或者您可以修改您的属性定义以捕获这两种协议:
@property(nonatomic, assign) id<MyBetterDelegate, UIToolbarDelegate> delegate;
是的,那是因为您可能在名为 delegate 的类中声明了一个 id 属性,而 UIToolbar 有一个同名的属性 id。只需将类的名称更改为 myClassDelegate 之类的名称,它就会清除警告。
你不应该在你的对象中使用“id”作为属性——它是为客观 C 对象保留的。
将其更改为“toolbarId”之类的东西 - 就可以了。