无法在AppDelegate中初始化委托,但在其工作的类方法中

时间:2015-07-22 08:52:37

标签: ios objective-c iphone appdelegate

我正在尝试在didFinishLaunchingWithOptions方法中的AppDelegate中初始化委托( MyDelegate ),如下所示:

UIStoryboard *myStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
[[someClassName instance] setMyDelegate:[myStoryboard instantiateViewControllerWithIdentifier:@"someVcName"]];

调试时,所有调用都运行良好,但在上述调用后返回AppDelegate时,MyDelegate为nil。

有趣的是,当我尝试在我编写的类方法中设置委托时,它可以工作 - 完全相同的代码。

为什么初始化在AppDelegate中不起作用,而它在类方法中有效?

感谢。

修改

基本上 @Leo 解决了问题,但解决方案非常简单,因为我使用 Storyboard 然后第一个ViewController自动启动(假设你分配了入口点箭头图标):

解决方案:

[[someClassName instance] setMyDelegate:[self.window rootViewController]];

1 个答案:

答案 0 :(得分:4)

关于方法instantiateViewControllerWithIdentifier

来自文件

  

每次调用时,此方法都会创建指定视图控制器的新实例。

因此,在didFinishLaunchingWithOptions中,您将创建一个本地viewController实例。

并且,该方法完成后将被解除分配。