为了账号安全,请及时绑定邮箱和手机立即绑定

代表如何在目标C中工作?

代表如何在目标C中工作?

iOS
慕森卡 2019-07-13 10:24:01
代表如何在目标C中工作?有谁知道我在哪里可以找到一个很好的解释/教程,说明应用程序委托是如何工作的?objective-C?这两本书我已经不多讲了delegates我对它们的解释不够充分,也不能很好地理解它们的力量和作用。
查看完整描述

3 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

如上所述,委托不是IOS或Object-C的特性,而是一种编程技术,不需要特定的语言支持。

一个类(e,g,class A)可以写成getDataDoSomething方法可以通过委托(可能因为classA不知道数据将是什么或它必须做什么)来实现。

为此,classA提供了一个属性,通常称为代表,(它只是实现委托方法的类-委托的指针),然后,当它想调用这些方法时,它实际上调用了委托中的方法:

[self.delegate getData];

[self.delegate doSomething];

self.delegate可能最初设置为self:

self.delegate = self;

也就是说,class A实现了这些方法的自己版本,除非它们被委派。

任何其他类,如果希望成为方法的实现者(即委托,并可能重写classA的默认实现),将首先将classA的委托设置为自身。因此,如果classB想成为这些方法的委托,那么在classB中,我们将拥有:

classA.delegate = self;

所以当classA调用这些委托的方法时,它实际上是调用classB来实现这些方法,而不知道关于classB的任何信息,甚至不知道它的存在,而且class B不需要子类classA。

其限制是,classB只能覆盖类A希望委托的方法-通过子类,您可以重写任何方法。

协议通过定义一个方法列表将委托过程正规化。由委托实现(委托方不提供方法的默认版本,方法必须在某个地方实现),也可以由委托实现(即委托程序有自己的版本,或者方法没有被执行也没关系)。


查看完整回答
反对 回复 2019-07-13
  • 3 回答
  • 0 关注
  • 350 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信