正常我们使用delegate都是 使用系统方法 respondsToSelector:来判断是否能够响应代理方法
但是 如果代理方法特别多的情况下 可能导致很多检查结果是多余的 因为方法执行结束后 响应的方法不会突然不响应 不响应的方法也不会突然响应 所以将结果缓存起来就能够优化性能
使用位段的方式
struct data{
unsigned int A :1,
unsigned int B :1,
unsigned int C :1,
}delegateFlag;
1代表占用几个二进制位
在 delegate的set方法里进行判断
delegateFlag.A = [delegate respondsToSelector:方法1];
delegateFlag.B = [delegate respondsToSelector:方法2];
delegateFlag.C = [delegate respondsToSelector:方法3];
使用的时候直接判断标识符就可以了
if(delegateFlag.A){
[delegate 方法1];
}