一个简单的问题。设计委托时,如果有任何可选的委托方法,我是否应该总是使用以下代码来检查委托是否符合方法?
if ([self.delegate respondsToSelector:@selector(changeBackgroundColor:number:)]) {
[self.delegate changeBackgroundColor:self number:aNumber];
}
答案 0 :(得分:1)
建议您这样做,因为您冒着调用不存在的选择器的风险。
答案 1 :(得分:0)
你应该总是那样做,是的。特别是当你有可选的委托方法时。
答案 2 :(得分:0)
如果您声明您的代表:
@property (weak, nonatomic) id <YourDelegateProtocol> delegate;
并且您的YourDelegateProtocol没有可选方法,因此无需检查响应选择器。如果您的委托的类没有实现所有YourDelegateProtocol方法,编译器将显示错误。您应该仅为协议的可选方法检查响应选择器。