Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 理解Objective-C中的@协议_Iphone_Objective C_C - Fatal编程技术网

Iphone 理解Objective-C中的@协议

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

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

我知道必须有一种有效且智能的方法来实现协议,但根据他所写的内容,我不明白为什么有人会使用协议,而不仅仅是创建一个类方法,因为不止一个类可以遵守一个协议(我知道还有一些更好的理由!)。 我想知道是否有人能帮我理解: 我将如何、为什么以及何时以智能方式在程序中使用协议。

一句话,各位代表。
Objective-c使用遍布各地的学员,让学员相互交流。
要查看示例,请参见
这不是使用协议的唯一地方,但可能是最常用的地方。

一个词,各位代表。
Objective-c使用遍布各地的学员,让学员相互交流。
要查看示例,请参见

这不是使用协议的唯一地方,但它可能是最常用的地方。

您可以有一个类,它是UIViewController,并且它实现了几个协议,例如UITableViewDelegate、UITableViewDataSource。一个类可以做不止一件事。

您可以拥有一个UIViewController类,它实现了几个协议,例如UITableViewDelegate、UITableViewDataSource。一个类可以做不止一件事。

如果你做过任何类型的面向对象编程,你可能知道协议是接口(它们不相同,但概念相似)。如果不是,就把协议看作蓝图

您使用协议的主要原因是,您可以在不了解对象的所有情况下使用对象;您需要知道的是,它们实现了一组方法。例如,如果类
Business
Person
符合协议
Contact
,该协议定义了方法
-(NSString*)phoneNumber
,则类
通讯簿可以调用
-(NSString*)phoneNumber
不知道对象是否属于
Business
Person类型


一旦您开始学习Cocoa和委托,您将看到协议是多么强大和重要。

如果您曾经做过任何类型的面向对象编程,您可能知道协议是接口(它们并不相同,但概念相似)。如果不是,就把协议看作蓝图

您使用协议的主要原因是,您可以在不了解对象的所有情况下使用对象;您需要知道的是,它们实现了一组方法。例如,如果类
Business
Person
符合协议
Contact
,该协议定义了方法
-(NSString*)phoneNumber
,则类
通讯簿可以调用
-(NSString*)phoneNumber
不知道对象是否属于
Business
Person类型


一旦您开始学习Cocoa和委托,您将看到协议是多么强大和重要。

就像@conmulligan所说的Objective-C使用协议让类彼此对话

这是班级间交流的众多方式之一

但协议必然是一种糟糕的方式

如果我要创建一个可重用的对象,我会使用协议,这通常用于许多项目


所以我创建了协议,使我的代码易于维护。

就像@conmulligan所说的Objective-C使用协议使类彼此通信

这是班级间交流的众多方式之一

但协议必然是一种糟糕的方式

如果我要创建一个可重用的对象,我会使用协议,这通常用于许多项目


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

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

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

“它们不相同”什么不相同?它们不相同“什么不相同?”?