我有以下代码,
在.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'
。
有关如何使其发挥作用的任何提示?
谢谢!
答案 0 :(得分:3)
这不是您在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
答案 1 :(得分:0)
你有这条线:
[super MyClass2001];
相反,你想拥有:
[super myMethod];
您试图调用名为MyClass2001
的方法,该方法不存在。
答案 2 :(得分:0)
1.Jus检查继承层次结构。在Objc中,必须为每个接口实现。但是你的代码告诉你没有MyBaseClass实现。
2.方法声明不能在.h。
中的{}内完成3.方法定义不能在.m。
中的{}内完成4.实现不扩展只扩展接口。
如果保持适当的等级,它应该有效。