繁体   English   中英

xCode / Objective-C解剖类比-帮助菜鸟获取它

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM