Ios 如何使用自定义UIViewController子类初始值设定项实现依赖项注入
我有一个UITabBarController子类,它依赖于MyAppsData对象。我试图通过添加新的指定初始值设定项,将MyAppsData注入UITabBarController子类,如下所示:Ios 如何使用自定义UIViewController子类初始值设定项实现依赖项注入,ios,objective-c,uiviewcontroller,dependency-injection,Ios,Objective C,Uiviewcontroller,Dependency Injection,我有一个UITabBarController子类,它依赖于MyAppsData对象。我试图通过添加新的指定初始值设定项,将MyAppsData注入UITabBarController子类,如下所示: - (instancetype)initWithMyAppsData:(MyAppsData *)data { self = [super initWithNibName:nil bundle:nil]; if (self) { self.appData = data
- (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。显然,当您在没有nib的情况下初始化视图控制器时,initWithNibName会这样做。在viewDidLoad中设置视图控制器属性通常比较安全
因此,我的问题是:在以编程方式实例化UIViewController时,使用UIViewController进行依赖项注入的最佳方法是什么?我怀疑您需要通过调用
[super init]自行处理整个初始化过程
而不是initWithNibName,或者您可以在视图中访问您的属性将出现
,或者您可以在SwiftI中实现您的类。我怀疑您需要通过调用[super init]自行处理整个初始化过程
而不是initWithNibName,或者您可以在视图中访问您的属性将出现
,或者您可以在Swift中实现您的类