2011-08-17 107 views
0

嘿所有基本上我试图保存一个自定义对象的数组,它保存很好,但是当我关闭应用程序并重新打开它实际上加载保存的数组(表入视图),但冻结了,我得到的所有是SIGKILL。我如何找到导致问题的原因?如何诊断iPhone的SIGKILL错误?

这是我使用的,如果它有助于加载数据的代码:

NSFileManager *fileManager = [NSFileManager defaultManager]; 

    if([fileManager fileExistsAtPath:dataFilePath]) { 
     // Load the array 
     NSMutableArray *arrayFromDisk = [NSKeyedUnarchiver 
              unarchiveObjectWithFile:dataFilePath]; 

     [Data sharedData].listOfItems = arrayFromDisk; 

     NSLog(@"Loaded"); 
    } 
+0

你有没有看[这个问题](http://stackoverflow.com/questions/3098684/ iphone应用程序内运行的模拟器-4-0-收到-SIGKILL)? – jtbandes

+0

@jtbandes我将所有的数据保存在' - (void)applicationDidEnterBackground:'中,问题是当我重新打开应用程序时,我正在获取一个sigkill。 –

回答

1

设置以下断点可能帮助:

  • objc_exception_throw
  • malloc_error_break
  • [NSException提高]

检查该线程的Xcode 4 https://devforums.apple.com/thread/68421

上的Xcode 3 http://blog.emmerinc.be/index.php/2009/03/19/break-on-exception-in-xcode/

希望这有助于

+0

我跟着你的链接添加了断点,我正在尝试学会如此忍受我,但我究竟在寻找什么? –

+0

你应该尝试重现相同的错误,当错误发生时,这个想法就是打破。通过这种方式,您可以知道错误的来源,或者至少知道错误来自何处。 – Lio

+0

好的,我仍然收到错误。虽然控制台确实会说'重新启用共享库断点1 重新启用共享库断点3 待定断点2 - “malloc_error_break”已解决,如果这很重要... –

0

这听起来像你的代码可能会抛出异常,这将是最有可能在unarchiveObjectWithFile:发生。正常的行为是记录异常和堆栈跟踪到控制台(所以看看),但你也可以尝试包装在@try ... @catch通话,看是否实际上是一个异常被抛出:

@try { 
    // Load the array 
    NSMutableArray *arrayFromDisk = [NSKeyedUnarchiver 
             unarchiveObjectWithFile:dataFilePath]; 

    [Data sharedData].listOfItems = arrayFromDisk; 

    NSLog(@"Loaded");  
} 

@catch (NSException* e) { 
    NSLog(@"Caught exception: %@", e); 
} 
+0

对不起,我还是这个新手,我将如何登录异常和堆栈跟踪? (我知道NSLOG,只是我注销了什么?) –

+0

哦,我试过\ @try和\ @catch,但我仍然加载 –

+0

然后这个问题似乎并没有与上面的代码。您是否使用过调试器来查看应用程序终止的位置,或者查看控制台以查看是否正在输出错误消息? – bosmacs