繁体   English   中英

在Objective-C中了解@Protocols

[英]Understanding @Protocols in Objective-C

我是编程的初学者,也是Objective-C的初学者。 我学习了基础C,并决定开始学习Objective-C。 我正在阅读Steven Kochan撰写的“在Objective C 2.0中编程”。 他关于协议的部分含糊不清。 他没有彻底解释为什么有人想在其程序中使用协议,也没有给出在程序中实现协议的具体示例。 他写道:“您可以使用协议来定义您希望其他子类的人实现的方法。” 他还说,协议有利于子类实现某些方法,而不必先定义实际方法。 他还说协议可以在不同的类中使用,因为它们是无类的。

我知道必须有一种有效且聪明的方法来实现协议,但是基于他的写法,我不明白为什么有人会使用协议,而不是仅仅因为一个类可以坚持而创建类方法而已协议(我知道还有更多更好的理由!)。 我想知道是否有人可以帮助我理解:如何,为什么以及何时以一种智能的方式在程序中使用协议。

如果您完成了任何类型的面向对象编程,您可能都将协议称为接口(它们并不相同,但是概念相似)。 如果不是,则将协议视为蓝图。

使用协议的主要原因是,您可以在不了解对象的情况下使用对象。 您需要知道的是它们实现了一组方法。 例如,如果BusinessPerson类符合定义方法- (NSString *)phoneNumber的协议Contact ,则AddressBook类可以调用-(NSString *)phoneNumber而不知道对象是否为BusinessPerson类型。 。

一旦开始了解Cocoa和委托,您将了解协议的功能和重要性。

一句话,代表们。
Objective-c在各处使用委托,以允许类彼此交谈。
要查看示例,请参见UITableViewDelegate协议
这不是@protocol唯一使用的地方,但它可能是最常用的地方。

协议是C中回调函数的更好版本。当您想自己实现MVC架构时,协议是有用的构造。 当模型更改时,需要通知视图。您可以使用协议将适当的事件通知给观察者。

您可能有一个UIViewController类,它实现了多种协议,例如UITableViewDelegate,UITableViewDataSource。 一堂课可以做的不止一件事。

就像@conmulligan一样,Objective-C使用协议使类彼此对话。

它是类之间进行通信的多种方式之一。

但是协议必然是一个坏方法。

如果要创建可重复使用的对象,则使用协议,该对象通常用于许多项目。

因此,我创建协议以使代码易于维护。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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