1

几天来,我一直在努力尝试了解如何在应用程序启动后立即执行操作。

基本上,如果用户打开一个决定他是否想在启动时下载新内容的开关,我想从我的网站下载一个 plist。

重点是:

  • “A”类具有重新加载内容的方法;
  • “B”类有一个开关,如果打开,它会告诉委托在应用程序启动后立即执行重新加载内容方法

现在,如果打开了“B”类的开关,我不知道如何告诉 AppDelegate 运行“A”类的方法。显然我需要使用NSUserDefaults,但在那之后我很迷茫。

任何人都可以让事情更清楚吗?或者,是否有更舒适的解决方法?

4

2 回答 2

2

是的,您可以使用 NSUserDefaults 执行此操作

在你的班上 b。

-(void)swithChanged
 {
   NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    //check if !null
   if(![[defaults objectForKey:@"shouldDownload"]isKindOfClass:[NSNull class]]){
         if([(NSNumber*)[defaults objectForKey:@"shouldDownload"]boolValue])
          {
             [defaults setObject:[NSNumber numberWithInt:0] forKey:@"shouldDownload"];
             [defaults synchronize];
          }else{
             [defaults setObject:[NSNumber numberWithInt:1] forKey:@"shouldDownload"];
             [defaults synchronize];

         }
     }else{
       //set your NSUserDefault here for the first time
    }

}

在您的 AppDelegate 中

- (void)applicationDidBecomeActive:(UIApplication *)application{
   NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    //check if !null
   if(![[defaults objectForKey:@"shouldDownload"]isKindOfClass:[NSNull class]]){
         if([(NSNumber*)[defaults objectForKey:@"shouldDownload"]boolValue])
          { 
              //you can write the downloadData method in this appDelegate,
             //[self downloadData]

             //OR
             AClass *aClass = [AClass alloc]init];
             [aClass downloadData];
          }else{
            //do not download
         }
     }else{
       //the default behaviour of app, download or not?
    }

}
于 2012-09-03T12:24:56.147 回答
1

这里有一篇文章可以帮助您了解应用程序启动期间的流程:http: //www.cocoanetics.com/2010/07/understanding-ios-4-backgrounding-and-delegate-messaging

另外,请查看此帖子: applicationWillEnterForeground 与 applicationDidBecomeActive、applicationWillResignActive 与 applicationDidEnterBackground

于 2012-09-03T12:11:02.230 回答