【问题标题】:check dynamic if a class responds to a selector by respondsToSelector:如果类通过 respondsToSelector 响应选择器,则检查动态:
【发布时间】:2011-05-09 10:21:07
【问题描述】:

如果类响应选择器,我正在寻找一种以动态方式检查的可能性。

例如,我在“parse[CountryCode]Adress”之类的类中有严格的方法名称架构。

我尝试过这样的事情:

SEL selector = NSSelectorFromString([NSString stringWithFormat:@"parse%@Address", @"DE"]);

if ([CountryTraderDataParser respondsToSelector:@selector(selector)]) {
    NSLog(@"responds to");
    [CountryTraderDataParser selector];
}

但这不起作用。

使用硬编码行[CountryTraderDataParser respondsToSelector:@selector(parseDEAddress:)] 这个例子可以正常工作。

还有其他/更好的方法可以让这个例子工作吗?

【问题讨论】:

  • 我认为你应该删除@selector,因为它已经是一个选择器了。

标签: iphone objective-c ios


【解决方案1】:

selector 变量已经是一个选择器(类型为SEL),所以你不应该使用@selector()

还有,

[CountryTraderDataParser selector];

无效,除非有一个名为 selector 的方法。如果你想让一个对象执行一个基于变量选择器的方法,使用-[NSObject performSelector:]

SEL selector = NSSelectorFromString([NSString stringWithFormat:@"parse%@Address", @"DE"]);

if ([CountryTraderDataParser respondsToSelector:selector]) {
    NSLog(@"responds to");
    [CountryTraderDataParser performSelector:selector];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-12
    • 2013-04-05
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-02
    • 2018-12-29
    相关资源
    最近更新 更多