包含它的类到类的前向协议实现

时间:2014-02-27 18:00:15

标签: ios objective-c xcode clang

我在NSobject上有一个类别,它实现了两个协议。在该实现中,其中一个已完全实现,但符合协议的方法调用另一个协议的方法。我想要做的是将方法实现责任转发给任何想要导入该类别的类。这意味着压制未实现的方法警告并使编译器在导入类中抱怨。这可能吗?

2 个答案:

答案 0 :(得分:2)

你可以使方法@optional或给NSObject一个虚拟实现,只是给出一个错误,就是“必须覆盖此方法”。在这种情况下,对于某些没有实现该方法的类而不是其他类的类,无法获得编译时警告。

答案 1 :(得分:0)

正如我在评论中所述,当您在NSObject上创建类别时,NSObject的任何子类都会获得这些方法,无论子类是否具有该类别的import语句。因此,类别不会被选择性地添加到导入它的子类中。

你可以做什么来实现你想要的是从类别中删除你所说的实现协议的部分,这样你所拥有的就是那里实现的方法。然后编译器不会抱怨您的类别缺少一些必需的协议方法。然后,当某人有子类时,他们可以指定他们的子类实现这些协议,并且他们可以实现缺少的方法,使编译器不会在他们的子类中抱怨。