在ObjC中,如何在子类中隐藏实现超类的方法?

时间:2011-09-21 22:21:43

标签: objective-c inheritance private-methods

在ObjC中,如何在子类中隐藏超类的方法实现?

我不确定@private会不会这样做,因为它似乎只适用于ivars。

3 个答案:

答案 0 :(得分:1)

你是对的,@private指令是例如变量,而不是方法。要隐藏方法的实现,只需从头文件中省略其声明即可。要禁止显示警告,您可以使用类别或类扩展来声明.m文件中的方法。

但是没有内置的语言功能来阻止子类看到该方法。你为什么要那样做?

答案 1 :(得分:0)

Obj-C中没有实际“私有”方法;由于任何消息都可以在运行时发送到任何对象,因此无法阻止某人发送您关心的消息。

也就是说,您可以在子类中拦截该消息而不处理它。使超类的方法不可访问的最简单方法是在子类中覆盖它并且什么都不做:

- (void)someMethodIDontWantToSupport
{
}

答案 2 :(得分:0)

在子类接口文件中标记。

- (void)someMethodIDontWantToSupport __unavailable;