为 '类' 无明显@interface调用超
问题描述:
时宣布选择 '方法' 我有下面的代码,为 '类' 无明显@interface调用超
在.h
文件:
@interface MyBaseClass : NSObject
{
- (void)myMethod;
}
在.m
文件:
@implementation MyClass2000 : MyBaseClass
{
- (void) myMethod
{
//Does something interesting here
myData[0] = 0;
myData[1] = 1;
}
}
后来我创建了一个扩展“MyClass2000”的类,名为“MyClass2001”
.h
文件:
#import "MyClass2000.h"
@interface MyClass2001 : MyClass2000
@end
.m
文件:
@implementation MyClass2001 : MyClass2000
{
}
这个类是完全一样的“MyClass2000”(但我特别需要,让他们在不同的班级,和一个延伸至另一。我还需要一个“MyClass2002类”,在这种情况下将只需要更新索引的1,所以我试图打电话[super myMethod]
如下:
下一个类继承“MyClass2001”
.h
文件:
#import "MyClass2001.h"
@interface MyClass2002 : MyClass2001
@end
.m
文件:
@implementation MyClass2002 : MyClass2001
{
- (void) myMethod
{
[super myMethod];
//Only update one value
myData[1] = 1;
}
}
在该行我得到:No visible @interface for 'MyClass2001' declares the selector 'myMethod'
。
有关如何使此工作的任何提示?
谢谢!
答
这不是你如何在Objective-C中声明一个方法。在你的界面,你声明的方法是这样的:
@interface MyClass2000 : MyBaseClass {
NSString *someVariableDeclaration;
}
- (void) myMethod;
@end
然后你实现这样在您的m功能:
@implementation MyClass2000 {
NSString * someDifferentVariableDeclaration;
}
- (void) myMethod
{
//Does something interesting here
myData[0] = 0;
myData[1] = 1;
}
@end
答
如果你有行:
[super MyClass2001];
取而代之,你想拥有:
[super myMethod];
您试图调用名为MyClass2001
的方法,该方法不存在。
答
1.请检查继承层次结构。在Objc中,必须为每个接口实施。但是你的代码告诉你没有MyBaseClass实现。
2.方法声明不能在{}内完成.h。
3.方法定义不能在.m中{}中完成。
4。实现不扩展只有接口被扩展。
如果维持正确的层次结构,它应该可以工作。
你几乎可以肯定没有在.h文件中正确地声明你的类和方法,并根据需要将它们包含在.m文件中。 (您不会向我们展示任何@interface声明。) –