程序员首页推荐iOS Developer

为你的视图建立一个基类!

2018-01-07  本文已影响213人  郑明明

题目中引人注目的感叹号,在这句话的作用不是惊讶,而表达的是,应该这样做。为所有视图建立基类,利用继承和多态的特性,更好地约束视图类的代码和风格。

从代码入手

.h文件的代码
#import <UIKit/UIKit.h>

@protocol NTBasicViewProtocol <NSObject>

- (void)setUpSubViews;
- (void)setUpConstraints;

@optional

- (void)bindViewModel;

@end

@interface NTBasicView : UIView <NTBasicViewProtocol>

@end

为了更清晰地看到到代码,这里没有在代码中添加注释。那么现在就来看下代码.h文件中的代码组成,声明了NTBasicViewProtocol这个协议,协议中有两个必须实现的方法

以及一个可选实现的方法

了解了头文件声明了哪些方法之后,我们需要知道基类的实现

.m文件的代码
#import "NTBasicView.h"

@implementation NTBasicView

- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self)
    {
        // 多态性
        [self setUpSubViews];
        [self setUpConstraints];
        [self bindViewModel];
        // 共性定制
        [self setUpCommonness];
    }
    return self;
}

#pragma mark - Inner Method

- (void)setUpCommonness
{

}

#pragma mark - Override Method

- (void)setUpSubViews
{
    
}

- (void)setUpConstraints
{
    
}

- (void)bindViewModel
{
    
}

@end

代码很简单,但是要设计好基类,就需要了解继承和多态的特性。可以发现,在重写的初始化方法中,执行了协议中声明的是三个方法,以及一个内部方法

上一篇 下一篇

猜你喜欢

热点阅读