为什么要使用代表呢?

时间:2015-11-17 22:21:26

标签: ios objective-c xcode delegates

我对Objective-C中的代表有一些疑问:

  1. 使用它们的重点是什么?为什么我不能用我需要的所有方法创建类,然后将该类的对象设置为属性(即使用协议的便利性是什么)?
  2. 谁调用AppDelegate的方法?为什么这些方法有一个类,而不是协议?
  3. 我读到,委托方法包含像" do"," will","应该","成为"等词。那么为什么ViewController的方法会这样命名呢?它与代表的关系如何?

2 个答案:

答案 0 :(得分:1)

  

使用它们有什么意义?为什么我不能用我需要的所有方法创建类,然后将该类的对象设置为属性(即使用协议的便利性是什么)?

单个对象可以符合多个协议,例如,它可以是UITableViewDelegateUIAlertViewDelegate。单个类不能有多个超类(即使在语法合法的语言中,我们早就知道这会产生重大问题,最着名的是Diamond Problem)。

  

谁调用AppDelegate的方法?为什么这些方法有一个类,而不是协议?

UIApplication调用方法。这是一个协议:UIApplicationDelegate。恰好是一个符合该协议的类。

  

我读到,委托方法包含像" do","将","应该","成为"等词。那么为什么ViewController的方法会这样命名呢?它与代表的关系如何?

UIViewController不是委托,也没有委托(好吧,在iOS 7中添加了转换委托,但这并没有太大变化)。它是一个设计为子类的类。如果您想知道何时发生各种事件,则这些方法旨在被覆盖。它的名字相似,因为出于类似的原因,它们被称为。

答案 1 :(得分:0)

委托基本上是在另一个类中发生的事件的监听器。要强调委托的有用性,请考虑AppDelegate文件,它是高级系统事件的侦听器,例如应用程序终止或进入后台时。它允许您为程序中“任何地方”以及执行期间“随时”发生的事情指定一个公共策略。它让你有更强的控制感。