2

我正在阅读 Stephen G. Kochan 的“Objective C 编程”,在第 11 章中他混合了一些内容:类别、协议、委托、非正式协议。

现在,他只是谈到了他们每个人,这让我更加困惑......我知道委托是 obj c 中最重要的主题之一,它与协议一起出现。

请帮忙,这对我很重要,所以我不会搞砸。tnx

4

1 回答 1

4

我会试着为你解释一下委托。当您知道时,这真的很简单,但是需要时间来解决它!

假设您有两个类,一个Calculator执行计算的CalculatorScreen类和一个用于向用户呈现计算结果的类。Calculator 类应该在完成计算时通知 CalculatorScreen,以便后者可以更新 UI。

协议提供了一种方法来定义一组与指定名称相关的方法。您可以在 Calculator 类中名为 CalculatorDelegate 的协议中定义许多方法,但方法实现在其他地方定义。

定义协议的类(在本例中为 Calculator)可以告诉委托符合协议的对象 - 在本例中为 CalculatorScreen)实现该方法。计算器类可能会完成一个加法计算并告诉它的委托(屏幕)进行更新。你懂我吗?

抱歉,当我在写作时,我意识到很难解释和同情每一个尝试过的作者!

iOS 示例:当您在 iPad 的显示屏上设置表格时,您使用 UITableView 类。但是那个类不知道表格的标题是什么,或者它有多少个部分和行,或者用什么来填充它。因此,它通过定义称为 UITableViewDataSource 和 UITableViewDelegate 的协议将责任委托给您。当 UITableView 需要知道一些信息,例如行数时,它会调用委托(你自己的类)上的相应方法,委托类包含协议中定义的那些方法的实现。

为了回答您的问题,我会暂时放下这本书,然后开始在一个虚拟应用程序中编写您迄今为止所学的内容!最好的学习方式是做(至少对我来说)。

于 2013-02-19T22:54:20.677 回答