UIView何时创建加载subview比较合适?

当我们使用ViewController的时候有ViewDidLoad方法保证数据或UI只加载一次
但是在UIView中 没有这样的生命周期函数 如果你的subview的创建是这样写的

- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self makeView];
    }
    return self;
}

那么恭喜你 你的代码很可能会出问题 因为我发现 initWithFrame会调用两次,不要问我为什么,我也不知道
所以应该在哪里创建呢?
这时我想起来了tableView的delegate方法,是一组按顺序执行的接口方法,啊哈,这是个很好的解决方案。
我们可以对外暴露一个方法, 当View初始化完成之后 在调用创建subview的方法
想在那里执行就在那里执行,想什么时候创建就什么时候创建