说,我想从帮助器类方法调用UIActionSheet。我希望辅助类(而不是对象)成为此操作表的委托。 所以我把自己传给了代表。
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"MyTitle"
delegate:self
cancelButtonTitle:nil
destructiveButtonTitle:@"Delete"
otherButtonTitles:nil];
我的帮助器类将委托方法实现为类方法,一切正常。 但是,我从编译器那里得到一个警告:不兼容的指针,当id期望时发送Class。我也试过[自习]并得到同样的警告。
如何避免此警告?
答案 0 :(得分:9)
只需将代理设置为[self self]
。
答案 1 :(得分:7)
您可以通过将self转换为输入id来消除警告。
[[UIActionSheet alloc] initWithTitle:@"MyTitle"
delegate:(id<UIActionSheetDelegate>)self
cancelButtonTitle:nil
destructiveButtonTitle:@"Delete"
otherButtonTitles:nil];
这将告诉编译器将值视为符合UIActionSheetDelegate协议的id
。
答案 2 :(得分:0)
在将对象指针传递给方法之前,您不会发出警告。它需要一个id
,您可以在其中Class
typedef struct objc_class *Class;
。
答案 3 :(得分:0)
我通过添加&lt;来解决它UIActionSheetDelegate&gt;在类.h文件接口声明