Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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
Objective c 什么是协议?_Objective C - Fatal编程技术网

Objective c 什么是协议?

Objective c 什么是协议?,objective-c,Objective C,我已经读了文档,但仍然感到困惑。有人能解释一下协议是什么吗?(您可以给出代码示例,但我确实在寻找解释)。实际上,ObjtoVC++中的协议与java中的接口非常相似,或者C++中的纯虚拟类非常类似(虽然不完全是纯的虚拟类,但可以有数据成员……)。它基本上保证了一个特定的类知道如何响应一组给定的方法(消息) 编辑原来的文章不见了,所以我用另一个教程替换了它。协议是指定义类实现的必需和/或可选方法的列表。如果一个类采用一个协议,它必须在它采用的协议中实现所有必需的方法。 Cocoa使用协议通过Obj

我已经读了文档,但仍然感到困惑。有人能解释一下协议是什么吗?(您可以给出代码示例,但我确实在寻找解释)

。实际上,ObjtoVC++中的协议与java中的接口非常相似,或者C++中的纯虚拟类非常类似(虽然不完全是纯的虚拟类,但可以有数据成员……)。它基本上保证了一个特定的类知道如何响应一组给定的方法(消息)

编辑原来的文章不见了,所以我用另一个教程替换了它。

协议是指定义类实现的必需和/或可选方法的列表。如果一个类采用一个协议,它必须在它采用的协议中实现所有必需的方法。 Cocoa使用协议通过Objective-C消息支持进程间通信。此外,由于Objective-C不支持多重继承,您可以通过协议实现类似的功能,因为一个类可以采用多个协议

协议的一个很好的例子是NSCoding,它有两个类必须实现的必需方法。该协议用于对类进行编码和解码,也就是说,通过写入永久存储器来归档对象

   @protocol NSCoding

     -(void)encodeWithCoder:(NSCoder *)aCoder;

     -(id)initWithCoder:(NSCoder *)aDecoder;

   @end
若要采用协议,请将协议名称附在下面类似的表格中

   @interface SomeClass : NSObject <NSCoding> 

    {
     some variables
    }
如上例所示,要使用协议,请在接口中声明协议,并在类实现中编写所需的方法:

//接口 @接口另一个类:NSObject

   {
    some declaration
   }
//实施 @另一类的实现

  - (BOOL)send:(id)data
   {
    some declaration
   }

  - (id)received
   {
    some code
   }
//可选方法

  - (int)progress
   {
    some code 
   }
   @end

我希望它能帮助您学习协议。

除非协议定义了可选方法,否则这是一种保证。在这种情况下,您仍然需要检查该方法是否已实现。协议也可以具有属性。
  - (int)progress
   {
    some code 
   }
   @end