0

そのスーパーメソッドに実装されているメソッドがあります。そして、私が自分のプログラムを実行するとき。正常に動作します。この警告を抑制するにはどうすればよいですか?ちなみに、どちらのメソッドも「.m」ファイルにあります。

コードは次のようになります。

ClassA.m

@interface ClassA()
- (void)method;
@end

ClassA.h

@interface ClassA : ClassB
@end

ClassB.m

@interface ClassB()
@end
@implementation ClassB
- (void)method
{
}

そして、ClassAでメソッドを呼び出すと問題なく動作します

4

3 に答える 3

2

とにかくいつでもメソッドを実装して、スーパーメソッドを呼び出すことができます-

-(void)doMyThing {

    [super doMyThing];

    // do nothing

}
于 2012-04-13T11:00:05.923 に答える
0

すべきでないときに.hファイルでメソッドを宣言したように聞こえますか?または、@endが.hファイルにない可能性があります。

あなたは私たちに続けるために多くを与えていません。.hと.mから完全なコードを確認できますか?


コードサンプルを読んだら、次のことを試してください。

ClassA.h

@interface ClassA : ClassB  
//ClassB inherits from Class A, so we define 'method' in Class B
//ClassA knows about 'method' by inheritance from class B,
//so 'method' doesn't need to be defined here.

//doStuff will be the method that calls 'method'
- (void)doStuff;
@end

ClassA.m

@interface ClassA
@end

@implementation ClassA
- (void)doStuff
{
   //Call 'Method'       
  [self method];
}
@end

ClassB.h

@interface ClassB  
//Define 'method' which will be inherited by ClassA 
- (void)method;
@end

ClassB.m

@interface ClassB
@end

@implementation ClassB
- (void)method
{
   //'method' does it's thing       
  NSLog(@"Method has been Called");
}
@end
于 2012-04-13T11:50:23.167 に答える
0

あなたはそれを完全に間違っています。人気のある構造は次のとおりです。

ClassB.h

@interface ClassB
- (void)method;
@end

ClassB.m

@interface ClassB()
@end
@implementation ClassB
- (void)method
{
    //do nothing or even assert false
}
@end

ClassA.h

@interface ClassA : ClassB
@end

ClassA.m

@interface ClassA()
@end
@implementation ClassA
- (void)method
{
    //do your stuff here
}
@end

そして、それはメソッドのオーバーライドと呼ばれます。しかし、私があなたが達成しようとしていることを正しく理解しているなら、あなたは持っているべきです:

ClassB.h

@interface ClassB
- (void)method;
@end

ClassB.m

@interface ClassB()
@end
@implementation ClassB
- (void)method
{
    //do your stuff here
}
@end

ClassA.h

@interface ClassA : ClassB
@end

そして、ClassAを台無しにする必要はありません、そしてあなたは呼び出すことができます

ClassA *o=[[ClassA alloc ] init];
[o method];

次に、methodClassBからの継承のおかげで、がclassAで使用可能になります。

于 2012-04-13T12:16:44.140 に答える