编写OC代码时应该注意的事项:协议与分类.md

1.通过委托协议和数据源协议进行数据通信

(1)自定义协议需要定义协议方法和协议属性,属性必须为weak防止循环引用。

(2)实现委托对象的办法是声明某个类遵从委托协议,然后将协议中的方法在类中进行实现。

(3)协议方法的一般调用:

    if([_delegate respondsToSelector:@selector(getData)]) {
        [_delegate getData];
    }

但有必要,可实现含有位段的结构体,将委托对象是否响应相关协议方法这一信息缓存在其中。

@interface WXCEShiViewController (){
    struct {
        unsigned int didRecter : 1;
    }_delegateFlag;
}

@end

@implementation WXCEShiViewController


- (void) setDelegate:(id<wxceshiDelegate>)delegate{
    _delegate = delegate;
    _delegateFlag.didRecter = [delegate respondsToSelector:@selector(getData)];
}

- (void)viewDidLoad {
    [super viewDidLoad];
  	//主要是为了避免重复判断选择器从而影响到性能
    if(_delegateFlag.didRecter) {
        [_delegate getData];
    }
}
2.按逻辑将类的实现代码分散到便于管理的几个分类当中

使用分类将实现代码划分为易于管理的小块。将应该视为私有的方法归入名为Private的分类中,以影藏实现的细节。

3.总是为第三方类进行名称前的点缀(加上你专有的点缀)
4.勿在分类中声明属性,除了class-continuation分类之外,可以定义存取方法,尽量不要定义属性。
5.使用class-continuation分类新增实例变量可在该分类中对内部可将属性进行扩展。

遵从协议一般也在分类中进行声明。

猜你喜欢

转载自blog.csdn.net/weixin_42357849/article/details/122001829
今日推荐