0

私は何か間違ったことをしようとしているのかもしれませんが、それは私のコードを単純にするのに役立ちます。

同じ機能を持つクラスがあります。長い場合を避けるために、そうでない場合はisKindOfClass、私はそのようなことをしたいです:

[(([myClassVar class] *) myClassVar) myFunction];

myFunctionがない場合はクラッシュする可能性myClassVarがありますが、if、else ifメソッドを実行すると、クラッシュせず、最後のelseの場合にエラーが書き込まれます。

誰かがそれを行う方法を知っていますか?

よろしくお願いします、
ダミアン

編集:
SamFisherが回答した場合、私のコードは次のようになります:

if( [myClassVar respondsToSelector:@selector(myFunction) )
    [myClassVar performSelector:@selector(myFunction)];
4

2 に答える 2

1

RespondsToSelector: を使用してから performSelector: を使用しないのはなぜですか?

于 2012-07-19T13:37:51.087 に答える
1

より客観的なアプローチは、インスタンスがセレクターをサポートしているかどうかを確認することです。はいの場合は、それを呼び出します。

例えば、

if ( [myClassVar respondsToSelector:@selector(myFunction:)] ) {
    [myClassVar myFunction];
}
于 2012-07-19T13:36:44.207 に答える