如何使用自定义UIViewController子类初始化程序实现依赖项注入

时间:2016-05-30 22:29:31

标签: ios objective-c uiviewcontroller dependency-injection

我有一个依赖于MyAppsData对象的UITabBarController子类。我试图通过添加一个新的指定初始化程序将MyAppsData注入到UITabBarController子类中,如下所示:

- (instancetype)initWithMyAppsData:(MyAppsData *)data {
    self = [super initWithNibName:nil bundle:nil];
    if (self) {
        self.appData = data;
    }
    return self;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Setup stuff based on self.appData
}

但是当我尝试在viewDidLoad中设置基于self.appData的东西时,self.appData为nil。结果是:在初始化程序可以设置appData属性之前,对initWithNibName的调用已经调用了loadView。显然initWithNibName在没有nib的情况下初始化视图控制器时执行此操作。我通常认为在viewDidLoad中设置视图控制器属性更安全。

所以这是我的问题:在以编程方式实例化它们时,使用UIViewControllers进行依赖注入的最佳方法是什么?

0 个答案:

没有答案