1

文字列と整数を引数として渡すObjectiveCメソッドがあります。このメソッド内で、セレクターを使用したいと思います。その名前は、渡した整数値に基づいています。たとえば、整数引数が5の場合、セレクターの名前を「buildXArrayIndex5」にします。整数引数は3で、セレクターの名前を「buildXarrayIndex3」にします。私はこれをどのように行うか、またはそれが可能/合理的であるかどうかについて本当に途方に暮れています。私はObjectiveCを初めて使用するので、何をしたいのかを書き留めましたが、機能していない/有効なコードではありません。しかし、ここにあります:

- (void) startBuildingXArray:(int)senderID:(NSString *)moveTrackerObject {

NSString *methodNamePrefix = @"buildXArrayIndex";

NSString *realMethodName = [[NSString alloc]initWithFormat:@"%@%d",methodNamePrefix,   
senderID];

SEL realSelector = NSSelectorFromString(realMethodName);

[self realSelector: moveTrackerObject];

}

インターフェイスで、SELrealSelectorを宣言しました。しかし、これを実行せずに「表示されている@interfaceがセレクターrealSelectorを宣言していない」というエラーが発生します。しかし、このコードの問題はこれだけではないと確信しています。このための適切なコードを作成する方法や、より良いアプローチを強調する方法を誰かに教えてもらえますか?

4

1 に答える 1

3

-performSelector:次のようなメソッドを使用してセレクターを呼び出す必要があります。

[self performSelector:realSelector];

また、acceptパラメーターを呼び出すメソッドの場合は、セレクター名にコロンを追加する必要があります。

NSString *realMethodName = [[NSString alloc]initWithFormat:@"%@%d:",methodNamePrefix, senderID];

そしてそれを呼びます:

[self performSelector:realSelector withObject:moveTrackerObject];
于 2012-10-22T16:15:09.597 に答える