【发布时间】:2011-09-07 16:09:45
【问题描述】:
我想在 NSObject 实例上使用选择器 不需要实现的协议。例如,如果调用它的 NSObject 实例支持,则应该设置一个错误属性的类别方法。这是代码,代码按预期工作:
if ([self respondsToSelector:@selector(setError:)])
{
[self performSelector:@selector(setError:) withObject:[NSError errorWithDomain:@"SomeDomain" code:1 userInfo:nil]];
}
但是,编译器没有看到任何带有 setError: 签名的方法,所以它给了我一个警告,每行包含@selector(setError:)sn-p:
Undeclared selector 'setError:'
我不想声明一个协议来消除这个警告,因为我不希望所有可能使用它的类来实现任何特殊的东西。按照惯例,我希望他们拥有setError: 方法或属性。
这可行吗?怎么样?
干杯,
EP
【问题讨论】:
-
不推荐使用的选择器将导致警告。访问选择器不再安全,因为选择器可能会在某个时候被删除。
标签: objective-c selector categories