0
- (void)setFrame:(CGRect)frame
{
    [super setFrame:frame];

    // code...
}

これは基本的に、Objective-Cのクラスの標準メソッドをオーバーライドするために私が行っていたことです。styleNSIntegermyStyleという変数を持つカスタムクラスmyClassを作成しました。

私は同じことを試みました:

- (void)setMyStyle:(NSInteger)myStyle
{
    [super setMyStyle:myStyle];

    // code...
}

しかし、このメソッドが見つからないため、機能していません。

[super setMyStyle:myStyle];

助言がありますか?

4

3 に答える 3

1

しかし、このメソッドが見つからないため、機能していません。

[super setMyStyle:myStyle];スーパークラスを呼び出すときは、という名前のメソッドが必要setMyStyleです。

編集:

styleNSIntegermyStyleという変数を持つカスタムクラスmyClassを作成しました。

と呼ばれる変数があるので、その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:] を呼び出すと、コンパイラはスーパーのクラス (ParentClass) に setMyStyle メソッドがあると想定し、エラーは発生しません。

#import "YourSublass.h"
@implementation YourSublass

- (void)setMyStyle:(NSInteger)myStyle
{
    [super setMyStyle:myStyle];

    // code...
}

@end
于 2013-02-26T04:35:00.353 に答える
0

私が考えることができるもう1つの理由は、おそらく親クラスをヘッダークラ​​スに含めるのを忘れたということです。

@interface CustomClass : ParentClass{

}

お役に立てれば..

于 2013-02-26T04:30:39.207 に答える