我正在更新一个不是我编写的应用程序中的代码,同时基本上自学 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/