1

アプリケーションが起動したらすぐにアクションを実行する方法を理解しようと、数日間壁に頭をぶつけてきました。

基本的に、ユーザーが起動時に新しいコンテンツをダウンロードするかどうかを決定するスイッチをオンにした場合、自分のWebサイトからplistをダウンロードしたいと思います。

ポイントは次のとおりです。

  • 「A」クラスには、コンテンツをリロードするメソッドがあります。
  • 「B」クラスにはスイッチがあり、オンにすると、アプリケーションが起動するとすぐにコンテンツの再読み込みメソッドを実行するようにデリゲートに指示します。

クラス「B」のスイッチがオンになっている場合に、クラス「A」のメソッドを実行するようにAppDelegateに指示する方法がわかりません。もちろん使う必要があります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 に答える