如果我们在任何委托方法中编写一些代码。它会是某种方法重载吗?
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
switch (alertView.tag)
{
case 1000:
if (buttonIndex == 0)
{
[self revealOneLetter];
}
break;
case 2000:
if (buttonIndex == 0)
{
[self removeSomeLetters];
}
break;
case 5000:
[self backBtnAction:nil];
break;
case 3000:
if (buttonIndex == 1)
{
[self buyBtnAction:nil];
}
break;
}
}
在上面的代码中,我们在委托方法中调用了一些方法,所以基本上我们覆盖了委托。 这件事的确切名称是什么。
答案 0 :(得分:2)
你覆盖(或覆盖或重载,这两者都不同)任何东西,你实施委托方法。也就是说,您正在添加一个可以由委托对象调用的方法。效果可以类似于覆盖子类中的方法:在这两种情况下,您都在修改对象的行为,但关系是不同的。 委派模式提供特化而不进行子类化。例如,在应用程序商店中四分之三的bazillion应用程序中,大约所有应用程序都使用相同的UIApplication对象 - 没有子类UIApplication,因为您可以使用应用程序委托对其进行专门化。
答案 1 :(得分:1)
你正在实现协议的方法(UIAlertViewDelegate协议)而不是重载(我认为你的意思是覆盖)。
在Objective-C中:
你在这里做的是告诉UIAlertView实例在某个事件发生时如何表现(点击按钮)
答案 2 :(得分:1)
你没有覆盖任何东西。您实施委托协议。
覆盖意味着在子类中重新实现超类'方法。 F.E.所有UIViewController
方法,例如viewDidLoad
,当您创建自己的viewcontroller子类并编写viewDidLoad
方法时,您覆盖 viewDidLoad
方法UIViewController
。
答案 3 :(得分:1)
这既不是覆盖也不是重载,绝对不是。实际上你的类(比如viewController)符合或采用到协议(在你的情况下是UIAlertViewDelegate
)。在中的objective-c中,协议是方法声明的列表。如果您的班级采用或符合协议,那么您必须在班级中实施这些方法。在协议必需中有两种方法,如果您符合协议,则必须实施可选,按名称,您可以确定它取决于开发人员他想要实施这些方法。
因此,在您的情况下,您的相应班级符合/采用了一个协议,即UIAlertViewDelegate
,这就是您实施以下方法的原因,该方法通知您UIAlertView
中的哪个按钮被按下了。
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex