Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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 协议也在obj-c中继承?_Objective C_Design Patterns - Fatal编程技术网

Objective c 协议也在obj-c中继承?

Objective c 协议也在obj-c中继承?,objective-c,design-patterns,Objective C,Design Patterns,我的问题是理论性的。在obj-c中,如果类实现协议: @interface Class:NSObject<protocol> Class2是否实现了该协议?我想创建一个具有多个实现的接口。我是通过定义一个父类来实现的,该父类实现了一个协议,该协议包含了所有应该实现的方法。因此,如果父类的子类没有实现协议规定的所有方法,我希望子类化父类的程序员收到警告。顺便说一下,如果这与响应有关,我将为对象创建实现一个抽象工厂 我读了一些关于抽象类的帖子,但是我没有找到我的问题的答案,但是关于实现

我的问题是理论性的。在obj-c中,如果类实现协议:

@interface Class:NSObject<protocol>
Class2是否实现了该协议?我想创建一个具有多个实现的接口。我是通过定义一个父类来实现的,该父类实现了一个协议,该协议包含了所有应该实现的方法。因此,如果父类的子类没有实现协议规定的所有方法,我希望子类化父类的程序员收到警告。顺便说一下,如果这与响应有关,我将为对象创建实现一个抽象工厂


我读了一些关于抽象类的帖子,但是我没有找到我的问题的答案,但是关于实现的其他建议会很受欢迎。

协议基本上是一种承诺,即您的类将实现某些方法。当您对实现协议的类进行子类化时,子类也会实现协议,因为它继承了超类的所有方法

当您声明您的公共超类实现了您的协议时,如果您没有实际提供协议中所有方法的实现,您将收到警告。您的子类继承所有这些实现,因此您不会在那里得到任何警告


根据实际构建的内容,只使用协议定义必须实现的接口(方法),但不使用任何公共超类可能更好。然后,当您创建一个声明实现该协议的新类时,如果您没有实现该协议的某个方法,则会收到警告。

协议基本上承诺您的类将实现某些方法。当您对实现协议的类进行子类化时,子类也会实现协议,因为它继承了超类的所有方法

当您声明您的公共超类实现了您的协议时,如果您没有实际提供协议中所有方法的实现,您将收到警告。您的子类继承所有这些实现,因此您不会在那里得到任何警告


根据实际构建的内容,只使用协议定义必须实现的接口(方法),但不使用任何公共超类可能更好。然后,当您创建一个声明要实现协议的新类时,如果您没有实现协议的某个方法,则会收到警告。

这将帮助您-可能的重复项:,,这将帮助您-可能的重复项:,,这是一个完美的答案!我认为它在我的模型中,我永远不知道它是在工厂方法中创建的什么实现,这就是我为什么选择它的原因。例如,我有一个服务器类,根据使用的通信层,它可以有很多实现。因此,我更希望我的服务器是一个服务器对象,而不是一个id指针,因为当我在模型中使用时,我不希望使用服务器实现对象。我不知道我是否解释得很好,这是一个完美的答案!我认为它在我的模型中,我永远不知道它是在工厂方法中创建的什么实现,这就是我为什么选择它的原因。例如,我有一个服务器类,根据使用的通信层,它可以有很多实现。因此,我更希望我的服务器是一个服务器对象,而不是一个id指针,因为当我在模型中使用时,我不希望使用服务器实现对象。我不知道我是否解释得很好XD
@interface Class2:Class