子类可以使用超类Ios的委托方法吗

Posted

技术标签:

【中文标题】子类可以使用超类Ios的委托方法吗【英文标题】:Can Subclass use a delegate method of superclass Ios 【发布时间】:2014-04-24 13:07:06 【问题描述】:

是否可以在子类上使用超类的委托

示例:A 类是 B 类的超类,超类 A 使用文本视图方法示例 textviewDidChange。我可以以某种方式在子类 B 上调用超类 A 的 [super textViewDidChange],即使它不在 A 类的头文件中 如果我在子类 B 上重新声明该方法

【问题讨论】:

【参考方案1】:

当您指定UITextViewDelegate 时,您是在告诉编译器您的class 符合UITextViewDelegate 的规范。如果class A 具有UITextViewDelegate 的所有要求,并且class B 是一个子类,那么它也将具有所有要求。没有什么能阻止您将任何instance 分配为delegate,因此您仍然必须小心。

【讨论】:

还要确保你指定实现委托方法的类,就像你为超类所做的那样 我不确定我是否理解分配任何实例的委托和 G_Money;s 语句的部分指定实现委托的类对不起英语不是我的第一个我确定你解释得很好但我的语言知识需要更具体,所以你们俩都说如果我在子类中再次有 textfieldDidChange 它会自动从 A 获取所有内容以及你放在 B 上的额外内容? 换句话说,没有检查您所说的委托实例是否实际实现了所有必需的方法。当您将委托指定为 myTextView.delegate = theSubclass 时,编译器假定您知道自己在做什么并且 theSubclass 实际上符合委托规范。【参考方案2】:

是的,你可以。由于 A 类确认 协议,因此无需在头文件中重新声明它们。只要确保它实现了所需的方法。

【讨论】:

以上是关于子类可以使用超类Ios的委托方法吗的主要内容,如果未能解决你的问题,请参考以下文章

我可以模拟超类方法调用吗?

使用“this”调用超类方法的子类

在其超类也具有相同名称的 ivar 的子类中拥有 ivar“委托”

您可以将子类作为参数传递给具有超类参数的函数吗? C++

子类会在后台包含来自超类的私有方法和成员变量吗? [复制]

Java语言中,下面关于类的描述正确的是()。(选择一项) 解释一下超类和子类。