我有一个依赖于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进行依赖注入的最佳方法是什么?