我可能会尝试做错事,但这有助于简化我的代码。
我有一些课,具有相同的功能。
要避免使用long if,否则如果使用isKindOfClass
,我想做类似的事情:
[(([myClassVar class] *) myClassVar) myFunction];
如果myClassVar
没有myFunction但是如果我执行if,else if方法,那么它可能会崩溃,它只是不会崩溃而只是在最后一种情况下写错误。
有人知道怎么做吗?
提前致谢,
达明
编辑:
由SamFisher回答,我的代码是:
if( [myClassVar respondsToSelector:@selector(myFunction) )
[myClassVar performSelector:@selector(myFunction)];
答案 0 :(得分:1)
更客观的方法是检查实例是否支持选择器。如果是,请拨打电话。
例如,
if ( [myClassVar respondsToSelector:@selector(myFunction:)] ) {
[myClassVar myFunction];
}
答案 1 :(得分:1)
为什么不使用respondsToSelector:然后执行SELECT:?