优化delegate响应

正常我们使用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];

}

你可能感兴趣的:(优化delegate响应)