Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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 在ObjC中,如何隐藏实现一个超类';子类中的方法?_Objective C_Inheritance_Private Methods - Fatal编程技术网

Objective c 在ObjC中,如何隐藏实现一个超类';子类中的方法?

Objective c 在ObjC中,如何隐藏实现一个超类';子类中的方法?,objective-c,inheritance,private-methods,Objective C,Inheritance,Private Methods,在ObjC中,如何将超类的方法隐藏在子类中 我不确定@private是否会起作用,因为它似乎只适用于IVAR。Obj-C中实际上没有“private”方法;由于任何消息都可以在运行时发送到任何对象,因此无法阻止某人发送您关心的消息 也就是说,您可以在子类中截获该消息,而不处理它。使超类的方法不可访问的最简单方法是在子类中重写它,而不执行任何操作: - (void)someMethodIDontWantToSupport { } 没错,@private指令是实例变量,而不是方法。要隐藏方法的实现

在ObjC中,如何将超类的方法隐藏在子类中

我不确定@private是否会起作用,因为它似乎只适用于IVAR。

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

也就是说,您可以在子类中截获该消息,而不处理它。使超类的方法不可访问的最简单方法是在子类中重写它,而不执行任何操作:

- (void)someMethodIDontWantToSupport
{
}

没错,
@private
指令是实例变量,而不是方法。要隐藏方法的实现,只需在头文件中省略其声明。要抑制警告,可以使用类别或类扩展名在
.m
文件中声明方法


但是,没有内置的语言特性来阻止子类看到该方法。为什么要这样做?

在子类接口文件中标记为

- (void)someMethodIDontWantToSupport __unavailable;
“隐藏超类的方法”是什么意思?