IOS超级关键字会导致错误

时间:2011-10-21 14:10:17

标签: ios inheritance super

我正在更新我没有写的应用程序中的代码,同时基本上教自己的目标C所以我是初学者。

我有一个名为TableViewController的类,在其中我有一个方法,一旦JSON提要成功获取一些数据就会被触发。这个方法叫做:

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

我有很多其他类继承自这个类,然后他们调用自己的这个方法版本并添加他们自己的功能部分。 因此,例如,我有一个名为CategoryViewController的类,其中定义了此方法:

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

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

在类别控制器的.h文件中,我有:

#import "MYTableViewController.h"

@interface MYCategoryViewController : MYTableViewController 
{ 
    //code here
}

所以它应该能够'看到'其他代码,但是我在SUPER线上遇到了这个错误:

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

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

所以,我做过的事情已经让这个好了,我不知道是什么。我必须在MYJSONFetch代码中,但我不确定。

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

2 个答案:

答案 0 :(得分:1)

方法是

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

所以你必须致电

[super JSONFetch:fetch didDownloadCollection:collection];

答案 1 :(得分:0)

这是因为该方法看起来像JSONFetch:didDownloadCollection:而不是didDownloadCollection: