我的应用程序每天执行一次或在收到本地通知时执行一系列处理方法以执行一系列任务并按预期工作。
我尝试将 ActivityIndicator 添加到视图中,当收到从 AppDelegate 发送来执行任务的通知时,该视图开始动画。然而,所发生的只是屏幕变暗,没有任何处理完成,活动指示器也没有出现。使屏幕变暗的指示器和子视图在应用程序的其他地方使用,并且肯定可以正常工作。我认为这一定与导致应用程序挂起并且没有继续调用任何其他方法的通知有关,因此它永远不会完成。
这是应用程序委托中的通知,在调用日常处理方法以启动视图控制器中的活动指示器之前调用,第二个通知视图控制器删除子视图。
该方法在 AppDelegate 中;
- (void)GoForRankingAndSMProcessing{
[[NSNotificationCenter defaultCenter] postNotificationName:@"ranking" object:self];
RankingAndSMProcess *process = [RankingAndSMProcess alloc];
[process DoRankingAndSocialMediaProcessing];
[process release];
[[NSNotificationCenter defaultCenter] postNotificationName:@"rankingDone" object:self];
}
这是在另一个视图中拾取的,通知设置在viewDidLoad
.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(workingWhileRanking:) name:@"ranking" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(workingFinishedRanking:) name:@"rankingDone" object:nil];
那些在那个视图中调用这些方法。
-(void)workingWhileRanking:(NSNotification *) notification{
loading = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
loading.opaque = NO;
loading.backgroundColor = [UIColor colorWithWhite:0.0f alpha:0.6f];
indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
[indicator setHidesWhenStopped:YES];
indicator.center = self.view.center;
[indicator startAnimating];
[self.view addSubview:loading];
[self.view addSubview:indicator];
}
-(void)workingFinishedRanking:(NSNotification *) notification{
[indicator stopAnimating];
[indicator removeFromSuperview];
[indicator release];
[loading removeFromSuperview];
[loading release];
}
通知必须在半透明子视图出现时发送,但是似乎没有调用任何处理方法,因此视图被永久锁定,直到我强制关闭应用程序。
发送通知是否会更改应用程序启动序列的当前流程,从而停止继续执行类中的代码?或者我是否尝试添加一个活动指示器以在某些幕后处理完全错误的方式期间显示?