複数のOBJCクラスに同一のメッセージを渡します
-
29-09-2019 - |
質問
私には複数のクラスがあり、そのすべてに同じメッセージを送りたいと思います。より明確にする:
Dox:WithClass:同じパラメーターを多くのクラスに送信したい。おそらくコードはそれを明確にするでしょう:
+ (void)doX:(NSString *)blah {
[Utility doX:blah withClass:[Foo class]];
[Utility doX:blah withClass:[Bar class]];
[Utility doX:blah withClass:[Baz class]];
[Utility doX:blah withClass:[Garply class]];
}
特定のプロトコルを実装するクラスで同様のことを行う3つのメソッドがあります(DOX:WithClass:Methodは、そのようなプロトコルを実装すると仮定する多くのステップを実行します)。
私の質問は、どのようにしてクラスをよりプログラム的にループすることができるので、単にリストに追加することができます(コードで - 実行時に追加することに興味がありません)。
解決
私の提案は、渡すことです NSArray
の Class
オブジェクト:
[Utility doX:blah withClasses:[NSArray arrayWithObjects:[Foo class], [Bar class], [Baz class], [Garply class], nil]];
-(void) doX:(Blah) blah withClasses:(NSArray *) classes {
//[classes makeObjectsPerformSelector:@selector(doX:) withObject:blah]
for(Class *someClass in classes) {
[Utility doX:blah withClass:someClass];
}
}
他のヒント
ここで本当にループしたいかどうかはわかりません。
それが私だったら、おそらくfoo、bar、baz、gargplyを持ち、DOXを定義する基本クラスを拡張しようとします。その後、ベースクラスにBLAHを観察し、変更時にDOXを呼び出すことができます。しかし、たぶん私はあなたが何をしようとしているのか理解していません。
所属していません StackOverflow