0

ほぼ同じコードを持つクラスがいくつかあります。それらの間で異なるのは1つまたは2つの文字列だけです。私がやりたいのは、それらの関数を定義する別のクラスからそれらを「x」にしてから、定数などを使用して、異なる文字列を定義することです。「x」が継承なのか拡張なのか、それとも何なのかわかりません。それは私が助けを必要としているものです。

例えば:

objectA.m:

-(void)helloWorld {
    NSLog("Hello %@",child.name);
}

objectBob.m:

#define name @"Bob"

objectJoe.m

#define name @"Joe"

(文字列を定義することが合法かどうかはわかりませんが、これで意味がわかります)

objectBob.mとobjectJoe.mがメソッドを定義する必要がなく、objectA.mとの関係だけが定義されていれば理想的です。このようなことをする方法はありますか?これはプロトコルに似ていますが、逆に、「プロトコル」で実際に関数を定義する必要があります。


他のすべてが失敗した場合は、objectA.mを作成します。

-(void)helloWorld:(NSString *name) {
    NSLog("Hello %@",name);
}

そして、他のファイルにその関数を呼び出させます(そしてちょうど#import objectA.m)。

4

2 に答える 2

2

サブクラスにメソッドを作成するだけ-nameです(基本クラスが1つ必要で、次にタイプごとにサブクラスが必要です)。

次に、次のことを行います。

- (void)helloWorld {
    NSLog(@"hello %@", [self name]);
}

編集:メソッドの命名のような非objcを修正しました。再度編集:メソッドを修正しました。

于 2010-06-07T22:02:39.803 に答える
0

私には相続のように聞こえます。helloWorldメソッドをとして定義し、サブクラスがインスタンス変数NSLog(@"Hello %@", name)に異なる値を与えるようにします。name(この目的には役に立たないプリプロセッサマクロではなく、インスタンス変数について話していることに注意してください。)

于 2010-06-07T22:02:43.667 に答える