[英]xCode / Objective-C Anatomy Analogies - Help a Noob Get It
好的,所以我试图开始使用Xcode,并且我对OOP有一些一般的经验,但是大多数时候我习惯于编写脚本。 Anyhoo,我试图了解目标C和xcode中的某些概念,但在将所有内容组合在一起时遇到了一些问题。
首先,我很难理解委托和协议的作用。 我认为,如果有人可以简单地用邮递员,老师,工厂或类似的东西来解释这一点,那将很有用。 我不理解委托中的方法与常规类方法之间的区别。
说我有一个班级邮递员。 现在,邮递员拥有方法sortMail()和deleteMail()。 什么是委托方法的示例。 如果使用委托,返回的数据在哪里? 在代表里面? 我是否必须实例化委托,然后从委托中读取结果,还是委托将其返回给调用对象? 协议从何而来...
请举个简单的例子:)宝贝的步骤。
礼宾和代表经常在一起。 它有助于了解什么是第一个协议。
协议
协议是一种通过类承诺实现标准方法集的方法。
示例:一名认证电工具有所有认证电工都会具备的某些技能。 如果您需要某人做某位经认证的电工所做的事情,那么任何经认证的电工都应该能够做到(至少在理论上如此)。
代表
现在,委托是已被赋予满足某些要求的责任的对象。 一个目标可以被赋予满足另一个目标的责任。
示例:建造房屋时,房屋需要铺设电线等。该职责已交给了认证的电工,我们知道他可以这样做,因为他已经认证(即执行某种协议)。
将所有内容放在可可环境中:
UITableView
需要提供单元格,以便可以显示它们。 为了提供单元,将需要创建一个类(或至少指定一个类)来实现UITableViewDataSource
协议。 这样可以确保该类执行所需的操作,以向UITableView
提供所需的单元格。
因此, UITableView
将提供单元的责任委托给某个类对象,该类对象实现了协议 ,该协议保证了该对象知道如何提供所需的单元。
委托是处理另一个对象的特定功能的对象-如“对象A将某些功能委托给对象B”中所述。
例如,您可以使用Apple的NSURLConnection
类的实例来请求Web服务,但是Apple的代码显然不知道如何处理其下载的数据,因此您提供了一个委托对象来处理该功能。 然后, NSURLConnection
在需要执行诸如下载数据之类的操作时,通过向对象传递消息来将该功能委托给您的对象。
另一个示例是表格视图。 苹果已经编写了很多代码来显示表格视图并处理与表格视图的交互,但是它不知道您要显示哪些数据,或者当有人与之交互时需要使用该数据做什么。 因此,您可以为这些事情提供委托对象。 当表视图需要知道要显示哪些数据时,它会要求您的委托为其获取数据。 当用户选择一个项目时,它会要求您的代表进行处理。
协议只是描述委托应该理解的消息的一种方式。 可能有非正式协议(在文档中进行了描述)和正式协议(在头文件中定义)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.