使用[id class]作为指针

时间:2012-07-19 13:32:40

标签: ios class

我可能会尝试做错事,但这有助于简化我的代码。

我有一些课,具有相同的功能。 要避免使用long if,否则如果使用isKindOfClass,我想做类似的事情:

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

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

有人知道怎么做吗?

提前致谢,
达明

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

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

2 个答案:

答案 0 :(得分:1)

更客观的方法是检查实例是否支持选择器。如果是,请拨打电话。

例如,

if ( [myClassVar respondsToSelector:@selector(myFunction:)] ) {
    [myClassVar myFunction];
}

答案 1 :(得分:1)

为什么不使用respondsToSelector:然后执行SELECT:?