4

さて、新鮮な状態(以前はiPhoneシミュレーターにインストールされていなかったアプリ)から、アプリは正常に起動します。次に、ホームボタンを押してアイコンをクリックします。これも問題ありません。次に、ホームボタンを押してから、マルチタスクバーからアプリを閉じてから、アイコンを押すと、SIGKILLエラーが発生します。

ただし、Xcodeでrunを押すと、常に問題なく動作します(アイコンを押すことができないマルチタスクバーから閉じた後でも)。これはシミュレーターの癖ですか?この動作は、NSUserDefaultを実装した後で、状態などを記憶するためにのみ開始されました。ただし、動作する場合は、すべてのデフォルトを記憶します。

どんな助けでも大歓迎です。

編集:

- (void)viewDidLoad
{

NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys:
                                 [NSNumber numberWithInt:1], @"firstRun",
                        nil];
[defaults registerDefaults:appDefaults];
if ([[defaults objectForKey:@"firstRun"] intValue] == 1) {
//do the stuff required at first launch
table = [NSMutableArray array];
Stocks =[NSMutableArray array];
Money =1234.56;
mem=@"GOOG";
[defaults setDouble:Money forKey:@"money"];
[defaults setObject:mem forKey:@"ticker"];
[defaults synchronize];
self.Input.text=mem;


- (void)viewWillAppear:(BOOL)animated
{

NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
if ([[defaults objectForKey:@"firstRun"] intValue] == 0) {
    [self entered:nil];

} else if ([[defaults objectForKey:@"firstRun"] intValue]== 1){
    [defaults setObject:[NSNumber numberWithInt:0] forKey:@"firstRun"];
    [defaults synchronize];
}
[super viewWillAppear:animated];
}

MainViewControllerのNSUserDefaultsに関しては、これが関連していると思います(他のviewControllerではUserDefaultsを使用していません)。

また、他のいくつかのメソッドでいくつかのsetObjects / synchronizesを実行しますが、ボタンがクリックされたときにのみ実行されます(クラッシュした場合は実行されません)。

4

1 に答える 1

3

マルチタスキング バーからアプリケーションを削除すると、実際には完全に閉じられます。したがって、XCode がアプリに関連付けたインスタンスを破棄します (すべてのプロセスが強制終了されます)。これが、SIGKILL エラーが発生する理由です。

iPhone シミュレーターの詳細: http://developer.apple.com/library/ios/#DOCUMENTATION/Xcode/Conceptual/ios_development_workflow/25-Using_iOS_Simulator/ios_simulator_application.html

実際、アプリケーションが XCode に接続されている間に、実際のデバイスでアプリケーションを実行し、マルチタスク バーからアプリケーションを削除した場合でも、これは発生します。ただし、アプリケーションがデバイスにインストールされていて、実行/テスト/プロファイリングのために Xcode に接続されていない場合、問題は発生しません。

于 2012-08-31T21:05:43.597 に答える