[英]Understanding @Protocols in Objective-C
我是编程的初学者,也是Objective-C的初学者。 我学习了基础C,并决定开始学习Objective-C。 我正在阅读Steven Kochan撰写的“在Objective C 2.0中编程”。 他关于协议的部分含糊不清。 他没有彻底解释为什么有人想在其程序中使用协议,也没有给出在程序中实现协议的具体示例。 他写道:“您可以使用协议来定义您希望其他子类的人实现的方法。” 他还说,协议有利于子类实现某些方法,而不必先定义实际方法。 他还说协议可以在不同的类中使用,因为它们是无类的。
我知道必须有一种有效且聪明的方法来实现协议,但是基于他的写法,我不明白为什么有人会使用协议,而不是仅仅因为一个类可以坚持而创建类方法而已协议(我知道还有更多更好的理由!)。 我想知道是否有人可以帮助我理解:如何,为什么以及何时以一种智能的方式在程序中使用协议。
如果您完成了任何类型的面向对象编程,您可能都将协议称为接口(它们并不相同,但是概念相似)。 如果不是,则将协议视为蓝图。
使用协议的主要原因是,您可以在不了解对象的情况下使用对象。 您需要知道的是它们实现了一组方法。 例如,如果Business
和Person
类符合定义方法- (NSString *)phoneNumber
的协议Contact
,则AddressBook
类可以调用-(NSString *)phoneNumber
而不知道对象是否为Business
或Person
类型。 。
一旦开始了解Cocoa和委托,您将了解协议的功能和重要性。
一句话,代表们。
Objective-c在各处使用委托,以允许类彼此交谈。
要查看示例,请参见UITableViewDelegate协议
这不是@protocol
唯一使用的地方,但它可能是最常用的地方。
协议是C中回调函数的更好版本。当您想自己实现MVC架构时,协议是有用的构造。 当模型更改时,需要通知视图。您可以使用协议将适当的事件通知给观察者。
您可能有一个UIViewController类,它实现了多种协议,例如UITableViewDelegate,UITableViewDataSource。 一堂课可以做的不止一件事。
就像@conmulligan一样,Objective-C使用协议使类彼此对话。
它是类之间进行通信的多种方式之一。
但是协议必然是一个坏方法。
如果要创建可重复使用的对象,则使用协议,该对象通常用于许多项目。
因此,我创建协议以使代码易于维护。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.