如何确定对象是否实现了特定方法?

Jas*_*son 7 methods cocoa objective-c

我正在迭代包含许多不同类型对象的NSArray.有很多方法可以确定对象是什么类.但是,我无法找到一个好方法来确定对象是否可以实现特定的功能.我可以把它放在try-catch中,但即使我正在捕获错误,它仍会在控制台中输出错误消息.有一个更好的方法吗?

简单的例子:

@try {
    if ([element lowercaseString]) {
        //do something
    }
}
@catch (id theException) {
    // do something else
}
Run Code Online (Sandbox Code Playgroud)

not*_*oop 22

如建议的那样,您可以使用respondsToSelector:声明的消息NSObject.提供的代码就像

if ([element respondsToSelector:@selector(lowercaseString)]) {
    // ... do work
}
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记冒号是选择器不可分割的一部分.@selector(catFish)与@selector(catFish :)完全不同. (8认同)

drv*_*ijk 5

查看NSObject的respondsToSelector方法