【问题标题】:How to solve fails which are not reported in console如何解决控制台中未报告的失​​败
【发布时间】:2011-03-02 12:11:08
【问题描述】:

也许这是个愚蠢的问题,但我有一个奇怪的问题。当我重新进入视图控制器时,每次尝试使用核心数据刷新数据库中的数据时,我的应用程序都会失败。如果我进入视图控制器并从互联网刷新数据,它就可以工作。但是,当我启动程序时,进入视图控制器,然后弹出它并重新输入并尝试刷新数据,它失败并且视图控制器中没有任何记录。我不知道为什么会这样。所以我尝试调试它,但问题消失了。在没有调试模式的情况下再次尝试后,它再次失败。我不知道为什么。可能是分配问题,还是没有发布?这是我对-viewDidLoad 的实现:

- (void)viewDidLoad {
    pool = [[NSAutoreleasePool alloc] init];

    if (managedObjectContext_ == nil) 
    { 
        managedObjectContext_ = [[(NavTestAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext] autorelease]; 
    }

    UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(insertNewObject)];
    self.navigationItem.rightBarButtonItem = addButton;
    [addButton release];

    prikazDatabaseArray = [[[NSMutableArray alloc] init]retain];

    NSDate *now = [NSDate date];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"dd.MM.yyyy"];
    datumOd = [[dateFormatter stringFromDate:now] retain];

    [dateFormatter release];

    VObrat = YES;
}    

我也用过

NSAutoreleasePool *pool;
NSURLConnection *theConnection;
NSMutableURLRequest *theRequest;
NSData *xmlData;
NSData *xmlFile;
NSXMLParser *addressParser;

在我的代码中。如果可以的话,至少帮我找出问题所在,因为没有调试和控制台,我感觉自己像个盲人。

非常感谢

【问题讨论】:

    标签: objective-c cocoa-touch xcode allocation


    【解决方案1】:

    managedObjectContext_ = [[(NavTestAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext] autorelease];行中删除自动释放

    你没有保留,所以你不应该(自动)释放它。


    编辑:我明白了,还有更多。

    删除prikazDatabaseArray = [[[NSMutableArray alloc] init]retain]; 中的保留。 Alloc 已经保留了您的对象。无需重复两次。

    并在方法结束时摆脱自动释放池或将其排空。

    您应该考虑再次阅读Memory Management Programming Guide

    【讨论】:

    • 感谢您的回答,现在我知道我在哪里犯了错误,但仍然不清楚为什么我不能使用调试...或者为什么它在调试时运行良好。还有为什么它不会在控制台中进行任何登录?但再次感谢,我投票赞成你的答案,但我会等待回答我的问题的答案:如何解决控制台中未报告的失​​败?谢谢
    【解决方案2】:

    如果您要创建自己的池,则需要在相同的上下文或方法或循环中释放池。

    你应该为此使用 [pool drain]。

    如果您无法看到使用性能工具运行的崩溃日志,它将为您提供您做错的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-30
      • 2020-09-22
      • 2014-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多