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

vbo*_*atz 7 ios

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

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

Bri*_*kel 17

从缺乏上下文很难说,但这似乎是Syntax的重复,用于解析继承的委托上的不兼容属性类型

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

例如,UIToolBar具有以下属性:

@property(nonatomic, assign) id<UIToolbarDelegate> delegate;
Run Code Online (Sandbox Code Playgroud)

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

@property(nonatomic, assign) id<MyBetterDelegate> delegate;
Run Code Online (Sandbox Code Playgroud)

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

@protocol MyBetterDelegate<UIToolbarDelegate>
...
Run Code Online (Sandbox Code Playgroud)

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

@property(nonatomic, assign) id<MyBetterDelegate, UIToolbarDelegate> delegate;
Run Code Online (Sandbox Code Playgroud)