Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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_Protocols - Fatal编程技术网

Objective c 我们必须实现协议的所有方法和属性吗?

Objective c 我们必须实现协议的所有方法和属性吗?,objective-c,protocols,Objective C,Protocols,我只想在Objective-C中问你,如果我们符合我们类中的协议,我们必须实现协议中声明的所有方法吗 @interface MyClass:NSObject<NSCopying, NSCoding> { } @end @接口MyClass:NSObject { } @结束 在本例中,我必须实现NSCopying和NSCoding协议中的所有方法吗?您必须实现标记为@required的所有方法,是的。这是协议的全部要点;它定义了一组必须实现以符合协议的可选和必需方法 如果超类实现

我只想在Objective-C中问你,如果我们符合我们类中的协议,我们必须实现协议中声明的所有方法吗

@interface MyClass:NSObject<NSCopying, NSCoding>
{

}
@end
@接口MyClass:NSObject
{
}
@结束

在本例中,我必须实现NSCopying和NSCoding协议中的所有方法吗?

您必须实现标记为
@required
的所有方法,是的。这是协议的全部要点;它定义了一组必须实现以符合协议的可选和必需方法


如果超类实现了该协议,那么您将继承该实现,但它不太可能足以进行
NSCopying
NSCoding
。因此,您将覆盖这些方法(并在您的方法中调用
super
的实现)。

您必须实现标记为
@required
的所有方法,是的。这是协议的全部要点;它定义了一组必须实现以符合协议的可选和必需方法


如果超类实现了该协议,那么您将继承该实现,但它不太可能足以进行
NSCopying
NSCoding
。因此,您将覆盖这些方法(并在您的中调用
super
的实现)。

不实现这些方法,您希望得到什么?如果协议对实现没有影响,那么采用协议有什么意义?实际上,如果在采用
NSCopying
时没有实现复制,您将如何期望复制
MyClass
的实例?同样地,对于编码,您希望通过不实现这些方法获得什么?如果协议对实现没有影响,那么采用协议有什么意义?实际上,如果在采用
NSCopying
时没有实现复制,您将如何期望复制
MyClass
的实例?同样地,编码呢?