1

クラスメソッドを持つ基本クラスがあるとします。

@interface base : NSObject

+(id)メソッド;

@終わり

そして、10 個の派生クラスがあります。派生 1 から派生 10 まで、それぞれがメソッドを上書きします。

@interface derived1 : base 
@end

これが問題です。次のような配列があります。

NSArray *array = [NSArray arrayWithObjects:[派生1クラス],[派生2クラス].......[派生10クラス]];

この配列を反復処理して、各要素のメソッドを呼び出したいのですが、どうすればよいですか?

PS: foreach ループでメソッドを 1 つずつ実行する必要があります。

4

3 に答える 3

2
  1. いつものように繰り返す
  2. オブジェクトのクラスを取得する
  3. その上でメソッドを呼び出します

    for (id object in objects) {
        [[object class] method];
    }
    

編集

上記は、具体的なインスタンス (@Alladinian :) 乾杯) がある場合です。それ以外の場合は、サンプル コードがリテラルであり、実際に使用する配列にクラスを配置している場合です。

for (id object in objects) {
   [object method];
}
于 2012-08-10T10:36:21.093 に答える
1

投稿したような配列があるとします:

NSArray *array = [NSArray arrayWithObjects:[derived1 class],[derived2 class]..[derived10 class]];

[array makeObjectsPerformSelector:@selector(method)];

編集: OPは質問を編集し、1つずつ繰り返して実行する必要があると述べました。だからポールの答えに行きなさい、それは本当にあなたが必要とするものです:)

于 2012-08-10T10:38:23.603 に答える
0

NSArray メソッドを検索します。makeObjectsPerformSelector または makeObjectsPerformSelector:withObject: または enumerateObjectsUsingBlock: または enumerateObjectsWithOptions:usingBlock: すべてがそれを行います。さらに、 for を使用して単純に反復し、各オブジェクトでメソッドを呼び出すことができます。

于 2012-08-10T10:43:50.633 に答える