我的应用程序代理正在调用didFinishLaunchingWithOptions
方法。在这个方法中有一行:
[viewController performSelectorOnMainThread:@selector(initTimer) withObject:nil waitUntilDone:NO];
现在,即使调用didFinishLaunchingWithOptions
方法,我的视图控制器中的initTimer方法也未被调用。为什么呢?
之前我没有遇到此问题,但现在我更新了我的应用以使用故事板而不是现在没有工作的xib,initTimer
未被调用为此行应该做。
以下是完整的didFinishLaunching
...代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after app launch
[application setIdleTimerDisabled:YES];
[window addSubview:viewController.view];
[window makeKeyAndVisible];
//[viewController performSelector:@selector(initTimer)];
NSLog(@"Handled");
[viewController performSelectorOnMainThread:@selector(initTimer) withObject:nil waitUntilDone:NO];
return YES;
}
旧的执行选择器仍在那里进行测试,而NSLog
调用是我知道该方法被调用的方式。我在initTimer方法中有一个类似的NSLog
调用,而且我知道它是如何被调用的。
答案 0 :(得分:1)
您是否确认在拨打电话时viewController
不是nil
?我没有看到它在任何地方初始化。
答案 1 :(得分:0)
好吧,我修好了。
这是我忘了的。因为我正在使用故事板,我的appDelegate无论如何都不应该像上面那样。它看起来应该像Apple展示的here。这就是我所做的。
但是之后,为了使initTimer方法正确调用,我需要将以下内容放在viewController自己的viewDidLoad方法中:
[self performSelectorOnMainThread:@selector(initTimer) withObject:nil waitUntilDone:NO];
噗!有效。谢谢大家的帮助。对此,我真的非常感激。 :)