【发布时间】:2012-06-09 04:06:45
【问题描述】:
我觉得我开始在这个问题上失去理智了。
我已经开始使用 SDK 提供的生成的 CoreData 代码来开发 CoreData iOS 应用程序。每当我尝试实例化实体的新实例以便保存它时,就会出现我的问题。
根据 Apple CoreData 教程,这是我在 AppDelegate 中的实例化代码(我已经将一堆代码移到那里只是为了尝试调试这个问题):
NSManagedObjectContext* context = [self managedObjectContext];
if (!context)
{
NSLog(@"Error"); // I'm not too concerned about my error handling just yet
}
紧接着,这是产生我遇到的错误的行:
Vehicle* vehicle = (Vehicle*)[NSEntityDescription insertNewObjectForEntityForName:@"Vehicle" inManagedObjectContext:context];
有问题的错误是:
Thread 1: EXC_BAD_ACCESS (code=EXC_ARM_DA_ALIGN address=0xdeadbeef)
总而言之,我真的不知道这意味着什么,除了内存对齐问题(在 ARMv7 中很常见?)而且我在 Google 上找到的资源对我没有任何帮助。
唯一的其他相关代码是 Xcode 在生成项目时提供的 'managedObjectContext' 方法,因为它首先生成了 managedObjectContext:
- (NSManagedObjectContext *)managedObjectContext
{
if (__managedObjectContext != nil) {
return __managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
__managedObjectContext = [[NSManagedObjectContext alloc] init];
[__managedObjectContext setPersistentStoreCoordinator:coordinator];
}
return __managedObjectContext;
}
就像我说的那样,我在这里已经超出了我的深度。谁能提供一些关于我如何解决这个问题的说明?
【问题讨论】:
-
xcdatamodeld中的数据模型定义正确吗? -
根据我在 CoreData 上找到的所有文档以及 Apple 提供的相应教程,是的。
-
尝试 1) 产品 - 清洁。 2)重启Xcode。
-
这不是关于对齐,而是关于未初始化/释放的内存
0xdeadbeef。你是如何初始化__managedObjectContext的? -
尝试在 didFinishLaunchingWithOptions 中将 _managedObjectContext 设置为 nil。
标签: iphone ios xcode core-data automatic-ref-counting