在 respondsToSelector 中检查 属性
Check property in respondsToSelector
我有协议
@protocol ListPickerCellDelegate <NSObject>
@property (nonatomic, strong) TAActivity *activity;
@end
我想检查委托 属性。我该怎么做?
我的代码,不知道行不行
if (!self.delegate || ![self.delegate respondsToSelector:@selector(activity))]) {
}
只需检查 activity
是否为 NULL
根据评论:
如果
,您只需检查实现是否存在
- 属性可选或
- 你得到一个实例,但不知道它 class 是否实现了协议。
如果是这样的话:
首先让我重写这个应用De Morgan:
if(!(self.delegate && [self.delegate respondsToSelector:@selector(activity)]))
{
…
}
这个我不是很懂,因为你检查一下,有没有没有方法activity
?通常它是相反的,你想知道它是否在使用它之前就存在。
但是,如果 self.delegate
是 nil
,[self.delegate respondsToSelector:…]
将 return NO
(定义为 nil 行为的消息)和整个 &&
表达式将计算为 NO
而不管第一个条件。所以检查 nil
.
是没有意义的
随便写:
if(![self.delegate respondsToSelector:@selector(activity)])
{
// Do not use activity
}
else
{
TAActivity *activity = [self.delegate activity];
}
(我真的会扭转局面。)
我有协议
@protocol ListPickerCellDelegate <NSObject>
@property (nonatomic, strong) TAActivity *activity;
@end
我想检查委托 属性。我该怎么做?
我的代码,不知道行不行
if (!self.delegate || ![self.delegate respondsToSelector:@selector(activity))]) {
}
只需检查 activity
是否为 NULL
根据评论:
如果
,您只需检查实现是否存在- 属性可选或
- 你得到一个实例,但不知道它 class 是否实现了协议。
如果是这样的话:
首先让我重写这个应用De Morgan:
if(!(self.delegate && [self.delegate respondsToSelector:@selector(activity)]))
{
…
}
这个我不是很懂,因为你检查一下,有没有没有方法activity
?通常它是相反的,你想知道它是否在使用它之前就存在。
但是,如果 self.delegate
是 nil
,[self.delegate respondsToSelector:…]
将 return NO
(定义为 nil 行为的消息)和整个 &&
表达式将计算为 NO
而不管第一个条件。所以检查 nil
.
随便写:
if(![self.delegate respondsToSelector:@selector(activity)])
{
// Do not use activity
}
else
{
TAActivity *activity = [self.delegate activity];
}
(我真的会扭转局面。)