我有一个方法作为 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/