0

我可能试图做错事,但这有助于使我的代码简单。

我有一些类,具有相同的功能。为了避免长时间的 if,else if with isKindOfClass,我想做这样的事情:

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

如果myClassVar没有 myFunction,它可能会崩溃,但如果我执行 if,else if 方法,它不会崩溃,只是在最后一个 else 情况下写一个错误。

有人知道怎么做吗?

在此先感谢,
达米安

编辑:
由 SamFisher 回答,我的代码是:

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

2 回答 2

1

一种更客观的方法是检查实例是否支持选择器。如果是,请致电。

例如,

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

你为什么不使用 respondsToSelector: 然后 performSelector: ?

于 2012-07-19T13:37:51.087 回答