私の質問は、1つのパラメーターを持つメソッドでは問題なく機能するが、2つのパラメーターでは機能しない場合についてです。このコードは、Appleアニメーションのサンプルコードからのものです。
メインビューオブジェクト(self)には、抽象スーパークラスオブジェクトsへの読み取り専用参照があります。
次のように、スーパークラスから継承するインスタンスのメソッドを呼び出すことができます。
[self.s myMethod:param1];
そしてそれはうまくいきます。
しかし、私が試してみると:
[self.s anotherMethod:param1 secondParam:param2];
コンパイルエラーが発生します:
セマンティックの問題>インスタンスメソッド'-anotherMethod:secondParam:'が見つかりません(戻りタイプのデフォルトは' id')
どちらのメソッドにもリターンタイプ-(void)があります。
最初のケースと2番目のケースでは、すべてが同じ方法で宣言および定義されます。
任意の提案をいただければ幸いです。
(パラメーターを1つのオブジェクトにまとめることに頼りたくありません!)
以下に例を追加した修正
スーパークラスおよび継承クラスの.hファイルでのこのような宣言
スーパークラスの場合:
@interface SuperClass : NSObject
{
...
}
...
- (void) myMethod:(SomeObject *) param1;
- (void) anotherMethod:(SomeObject *) param1: (int) param2;
@end
継承されたクラスの場合:
#import "SuperClass.h"
@interface InheritedClass : SuperClass
{
...
}
...
- (void) myMethod:(SomeObject *) param1;
- (void) anotherMethod:(SomeObject *) param1: (int) param2;
@end
各クラスの.mファイルの実装
これを継承されたクラスの.mファイルに追加しようとしました。
@interface InheritedClass ()
- (void) anotherMethod:(SomeObject *) param1: (int) param2;
@end