我正在更新我没有写的应用程序中的代码,同时基本上教自己的目标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代码中,但我不确定。
任何人都对此有所了解,花了几个小时试图弄清楚为什么它看不到父方法。
答案 0 :(得分:1)
方法是
- (void)JSONFetch:(MYJSONFetch *)fetch didDownloadCollection:(id)collection
所以你必须致电
[super JSONFetch:fetch didDownloadCollection:collection];
答案 1 :(得分:0)
这是因为该方法看起来像JSONFetch:didDownloadCollection:
而不是didDownloadCollection:
。