我可以使用类方法作为委托callback吗?

在类方法方法中,我声明如下:

UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Hello" message:@"World" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Done", nil]; 

现在即使contains方法是一个类方法,编译器也不会抱怨delegate:self 。 现在成为委托,我必须在UIAlertViewDelegate协议中实现该方法。

现在是否重要,如果方法是一个类方法,为了在用户与我的AlertView交互时被调用?

我问这个问题,因为我的类没有任何实例variables,所以我宁愿它只包含类方法。

首先,我假设“静态”方法,你的意思是类方法(声明+而不是- )。

“编译器不抱怨”关于Objective-C并不总是告诉你很多。 所有这一切意味着你已经确信编译器在运行时应该(或者至less可以 )工作。

最后,如果你提供的委托对象响应正确的消息,编译器不会在意它是一个类(运行时也不会)。 在这种情况下,你从类方法提供self 。 就好像你input了[MyClass class]

我认为这是否是你应该做的可能是可疑的,但这可能超出了你的问题的范围。

我想分享一下我的发现:

  1. 无论我是否像这个delegate:self一样声明delegate:selfdelegate:[MyClass class]

  2. 但是,我如何声明方法并不重要:

    这工作

     +(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ // Some Actions here } 

    尽pipe以下“语法”是UIAlertViewDelegate协议中的声明,但它不起作用

     -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ // Some Actions here } 

是的你可以 !!! 一个类也是一个对象。