IOS super 关键字导致错误

标签 ios inheritance super

我正在更新一个不是我编写的应用程序中的代码,同时基本上自学 objective-c ,所以我是这方面的初学者。

我有一个名为 TableViewController 的类,其中有一个方法,一旦 JSON feed 成功获取一些数据就会触发该方法。该方法称为:

- (void)JSONFetch:(MYJSONFetch *)fetch didDownloadCollection:(id)collection 
{
    //CODE HERE
}

我有很多从该类继承的其他类,它们依次调用该方法自己的版本,并将自己的功能添加到组合中。 例如,我有一个名为 CategoryViewController 的类,其中定义了此方法:

- (void)JSONFetch:(MYJSONFetch *)fetch didDownloadCollection:(id)collection 
{
    [super didDownloadCollection:collection];
}

注意那里的 SUPER 调用,理想情况下它应该能够访问父方法中的所有代码以及它自己的代码。

在类别 Controller 上的 .h 文件中,我有以下内容:

#import "MYTableViewController.h"

@interface MYCategoryViewController : MYTableViewController 
{ 
    //code here
}

所以它应该能够“看到”其他代码,但我在 SUPER 行上收到此错误:

Instance method '-didDownloadCollection' not found (return type defaults to 'id')

这大概意味着它实际上看不到父方法。据我所知,它没有设置为私有(private),.h 明确提到了继承,其他方法调用愉快地在两者之间来回反弹。

所以,我所做的一些事情破坏了这一切,但我不知道是什么。我隐约知道它一定在 MYJSONFetch 代码中,但我不确定。

有人对此有任何了解,花了几个小时试图弄清楚为什么它看不到父方法。

最佳答案

方法是

- (void)JSONFetch:(MYJSONFetch *)fetch didDownloadCollection:(id)collection

所以你必须打电话

[super JSONFetch:fetch didDownloadCollection:collection];

关于IOS super 关键字导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7850626/

相关文章:

ios - 在 iOS 中处理框架的方向

iOS编程: Class and Instance

c++ - 当类的成员存储为没有此类方法的父类的对象时,如何访问该类的成员?

java - 为什么当通过 "super"和 "this"调用时 hashCode() 给出相同的结果?

java - JAVA 中的 super() 函数

python - 创建从 super() 类中提取变量的子类时出现问题

ios - Apple Watch WCSession 返回 watchAppInstalled false

ios - 使用 popToRootViewControllerAnimated :YES 时导航栏消失得比 View 快

c++ - 运行时多态性到底是什么意思?

python - 如何(Sanely)扩展 sympy.Rational