从类方法将委托设置为“self”

时间:2011-07-18 04:59:27

标签: iphone objective-c ios class delegates

说,我想从帮助器类方法调用UIActionSheet。我希望辅助类(而不是对象)成为此操作表的委托。 所以我把自己传给了代表。

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"MyTitle"
                                                         delegate:self
                                                cancelButtonTitle:nil
                                           destructiveButtonTitle:@"Delete" 
                                                otherButtonTitles:nil];

我的帮助器类将委托方法实现为类方法,一切正常。 但是,我从编译器那里得到一个警告:不兼容的指针,当id期望时发送Class。我也试过[自习]并得到同样的警告。

如何避免此警告?

4 个答案:

答案 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文件接口声明