0
- (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];

有什么建议么?

4

3 回答 3

1

但它不起作用,因为它找不到这个方法:

当你调用[super setMyStyle:myStyle];你的超类必须有一个名为setMyStyle.

编辑:

我创建了一个自定义类 myClass,它有一个名为 style NSInteger myStyle 的变量。

由于您有一个名为 的变量myStyle,因此您需要为其创建 setter 和 getter。为此,您需要创建方法或使用@property/ @synthesize

或者不需要创建 iVar,您可以直接为myStyle.

于 2013-02-26T04:26:10.503 回答
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
于 2013-02-26T04:35:00.353 回答
0

我能想到的另一个原因是,您可能忘记在头类中包含父类?

@interface CustomClass : ParentClass{

}

希望这可以帮助..

于 2013-02-26T04:30:39.207 回答