检查respondsToSelector中的属性

时间:2015-09-01 20:14:06

标签: ios objective-c swift delegates selector

我有协议

@protocol ListPickerCellDelegate <NSObject>
@property (nonatomic, strong) TAActivity *activity;
@end

我想检查其财产上的委托。我怎么能这样做?

我的代码,不确定是否正常

if (!self.delegate || ![self.delegate respondsToSelector:@selector(activity))]) {

}

2 个答案:

答案 0 :(得分:2)

根据评论:

如果

,您只需要检查是否存在实施
  • 该属性是可选的
  • 你得到一个实例但不知道它的类是否实现了协议。

如果是这种情况:

首先让我重写这个应用De Morgan

if(!(self.delegate && [self.delegate respondsToSelector:@selector(activity)]))
{
   …
}

我真的不明白这一点,因为你检查一下是否有没有方法activity?通常情况是反过来,你想知道它是否在使用它之前。

但是,如果self.delegatenil[self.delegate respondsToSelector:…]将返回NO(已定义的消息为nil行为),整个&&表达式将评估为{ {1}}无论第一个条件如何。因此,检查NO

是没有意义的

只需写下:

nil

(我真的会把它转过来。)

答案 1 :(得分:-2)

只检查activity是否为NULL