- (void)setFrame:(CGRect)frame
{
[super setFrame:frame];
// code...
}
这基本上就是我在覆盖Objective-C中的标准类方法时所做的。 我创建了一个自定义类myClass,它有一个名为style NSInteger myStyle的变量。
我尝试过同样的事情:
- (void)setMyStyle:(NSInteger)myStyle
{
[super setMyStyle:myStyle];
// code...
}
但它没有用,因为找不到这个方法:
[super setMyStyle:myStyle];
有什么建议吗?
答案 0 :(得分:1)
但它没有用,因为找不到这个方法:
在调用[super setMyStyle:myStyle];
时,您的超类必须有一个名为setMyStyle
的方法。
编辑:
我创建了一个自定义类myClass,它有一个名为style NSInteger myStyle的变量。
由于你有一个名为myStyle
的变量,你需要为它创建setter和getter。为此,您需要创建方法或使用@property
/ @synthesize
。
或者无需创建iVar,您可以直接为myStyle
创建属性。
答案 1 :(得分:1)
确保在父类的头文件中声明了您的方法:
//ParentClass.h
@interface ParentClass : ItsParentClass {
}
- (void)setMyStyle:(NSInteger)myStyle;
并且#include子类中的标题
//YourSubClass.h
#import "ParentClass.h"
@interface YourSubClass : ParentClass {
}
当你调用 - [super setMyStyle:]时,编译器希望super的类(ParentClass)具有setMyStyle方法,你不会得到错误。
#import "YourSublass.h"
@implementation YourSublass
- (void)setMyStyle:(NSInteger)myStyle
{
[super setMyStyle:myStyle];
// code...
}
@end
答案 2 :(得分:0)
我能想到的另一个原因是,您可能忘记在头类中包含父类?
@interface CustomClass : ParentClass{
}
希望这会有所帮助..