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

Jus*_*tin 3 iphone objective-c selector nsstring

我有一个方法作为NSString *.如果它存在,我想打电话给它,如果没有,什么都不做.

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

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

Dav*_*ong 5

为什么你说这不起作用?这是实现调用可选委托方法的最常用方法.我从来没有遇到过这种结构无法解决的问题.

  • 然后eventSelector可能为0.如果赋值为nil或者无法将NSString转换为UTF-8,则NSSelectorFromString返回(SEL)0.你在eventSelectorStr中给它一个有效的字符串吗? (3认同)