Objective C委托方法

时间:2015-04-24 06:03:39

标签: objective-c

一个简单的问题。设计委托时,如果有任何可选的委托方法,我是否应该总是使用以下代码来检查委托是否符合方法?

if ([self.delegate respondsToSelector:@selector(changeBackgroundColor:number:)]) {
    [self.delegate changeBackgroundColor:self number:aNumber];
}

3 个答案:

答案 0 :(得分:1)

建议您这样做,因为您冒着调用不存在的选择器的风险。

答案 1 :(得分:0)

你应该总是那样做,是的。特别是当你有可选的委托方法时。

答案 2 :(得分:0)

如果您声明您的代表:

@property (weak, nonatomic) id <YourDelegateProtocol> delegate;

并且您的YourDelegateProtocol没有可选方法,因此无需检查响应选择器。如果您的委托的类没有实现所有YourDelegateProtocol方法,编译器将显示错误。您应该仅为协议的可选方法检查响应选择器。