来自Java开发人员POV的iOS代表
我已经做了几年Java开发人员,大约一年前开始从事Android开发。在攻克安卓系统之后,我试图用iOS来测试我的运气。到目前为止还不错,但我对“代表”的想法仍然很模糊。我在这里读了几篇文章,但仍然没有最好的想法。对我来说,它们似乎类似于Java中的继承,例如使用接口或抽象类 有人能以我能理解的观点澄清一下吗来自Java开发人员POV的iOS代表,java,iphone,objective-c,ios,delegates,Java,Iphone,Objective C,Ios,Delegates,我已经做了几年Java开发人员,大约一年前开始从事Android开发。在攻克安卓系统之后,我试图用iOS来测试我的运气。到目前为止还不错,但我对“代表”的想法仍然很模糊。我在这里读了几篇文章,但仍然没有最好的想法。对我来说,它们似乎类似于Java中的继承,例如使用接口或抽象类 有人能以我能理解的观点澄清一下吗 提前感谢。使用对象时,可以从其类继承一些回调方法。基本上,当对象发生事件时,您可以进行响应 对象类正在将该事件“委托”给类实例 不,这与继承的概念不同 我想说,这就像AWT/Swing中使
提前感谢。使用对象时,可以从其类继承一些回调方法。基本上,当对象发生事件时,您可以进行响应
对象类正在将该事件“委托”给类实例 不,这与继承的概念不同 我想说,这就像AWT/Swing中使用的侦听器方法。例如:
class MyActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) { ... }
}
myComponent.addActionListener(new MyActionListener);
在ObjC中使用委托方法的情况如下所示:
@class MyActionListener : NSObject<NSActionListener>
-(void) actionPerformed:(NSEvent*)event;
@end
myComponent.delegate = [[[MyActionListener alloc] init] autorelease];
@class MyActionListener:NSObject
-(无效)执行的行动:(N事件*)事件;
@结束
myComponent.delegate=[[[MyActionListener alloc]init]autorelease];
实际上,您将一个类的某些行为委托给组合(而不是继承)使用的特定的其他对象,以便在需要时调用委托方法(用于回调、用于提供特定实现等等)因此,基本上,我正在拦截对该类的预定义方法的调用,它将改为我的自定义代码?据我所知,是的。您正在成为事件处理程序,而不是该对象的类。这是一个很好的解释。你说得比我好。这解决了我的问题:)谢谢。我马上接受你的回答。