【问题标题】:How to debug Core Data crash on fetch request如何在获取请求时调试核心数据崩溃
【发布时间】:2010-12-28 21:47:31
【问题描述】:

第二次执行

[[MOC executeFetchRequest:request error:&error] lastObject];

说完

NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Login" inManagedObjectContext:MOC]];
NSError *error = nil;

它因 EXC_BAD_ACCESS 而崩溃。包括调试窗口,看起来崩溃发生在核心数据堆栈的深处。关于我应该如何调试它以找出发生了什么的任何想法?

(以防万一,这里是图片的链接http://tinypic.com/r/zmavph/6点击链接中的图片,调试窗口会变大)

干杯

尼克

【问题讨论】:

    标签: iphone objective-c debugging memory-management core-data


    【解决方案1】:

    EXC_BAD_ACCESS 是内存错误。您在释放对象后使用它。如果没有(更多)代码,将很难调试它。

    您是否尝试过运行分析器(Xcode > Build > Build and Analyze)?

    您可能还想打破提取和数组查找:

    NSArray *fetchedObjects = [MOC executeFetchRequest:request error:&error]
    if (!fetchedObjects) {
        NSLog(@"Error fetching Login: %@", [error localizedDescription]);
        abort();
    }
    
    NSManagedObject *loginObject = [fetchedObjects lastObject];
    

    【讨论】:

    • 正如 gerry3 所建议的,这不是核心数据问题,而是对象的简单过度释放。尝试打开 NSZombie 并追踪过度释放的对象。
    【解决方案2】:

    Apple 在 CoreData 调试上有一个非常有用的page

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多