iphone - 给定 NSString 时如何确定 Obj-C 中是否存在方法

标签 iphone objective-c nsstring selector

我有一个方法作为 NSString *。如果它存在,我想调用它,如果不存在,则什么也不做。

SEL eventSelector = NSSelectorFromString(eventSelectorStr);
if ([delegate respondsToSelector:eventSelector]) {
    [delegate performSelector:eventSelector];
    [delegate adapterDidFinishAdRequest:self];
}
else {
    // Does not implement selector
}

此代码不起作用,因为 NSSelectorFromString 会将字符串注册为选择器,因此 respondsToSelector:eventSelector 将导致崩溃,因为选择器实际上是无效的。

最佳答案

为什么说那不行呢?这是实现调用可选委托(delegate)方法的最常见方式。我从来没有遇到过该结构不起作用的问题。

关于iphone - 给定 NSString 时如何确定 Obj-C 中是否存在方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2761167/

相关文章:

iphone - 抓取音频

javascript - 是否可以使用 iframe API 在 iOS 的浏览器上播放 youtube 视频?

iphone - UILabel 中文本的像素宽度

objective-c - 为什么这个 UIImageView 自动居中?

ios - 用 isEqual 比较字符串没有运行完整的功能 iOS

ios - iPhone 数字时钟

iphone - 从字符串中删除 Html 格式

iphone - objective-c:如何将字符串分配给 NSMutableData?

c++ - 如何在 Objective C (Xcode) 中使用 C、C++ 程序或类?

objective-c - 如何更改 IKImageBrowserView 的双击行为?