我可以使用类方法作为委托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]
。
我认为这是否是你应该做的可能是可疑的,但这可能超出了你的问题的范围。
我想分享一下我的发现:
-
无论我是否像这个
delegate:self
一样声明delegate:self
或delegate:[MyClass class]
-
但是,我如何声明方法并不重要:
这工作
+(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ // Some Actions here }
尽pipe以下“语法”是
UIAlertViewDelegate
协议中的声明,但它不起作用 :-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ // Some Actions here }
是的你可以 !!! 一个类也是一个对象。