我有一个NSManagedObject。在某些情况下,当我访问一个块中的对象时,它会出现一个不同的指针,当我访问该对象的变量时,我得到一个EXC_BAD_ACCESS崩溃。
这是一个简化的代码:
+(void)updateObject:(NSManagedObject *)object{
NSLog(@"Object %@", object);
[self requestUpdateFromDict:currentDict
succes:^(NSURLSessionDataTask *task, id responseObject)
{
NSLog(@"Object %@", object);
[doSomethingWith:object]
}];
}
输出例如:
Object <TestObject: 0x7f9fadab1bc0> (entity: TestObject; id: 0xd000000000040004 <x-coredata://5F27CBB5-800D-44B8-BB4B-99A0DE6962E4/TestObject/p1> ; data: {
floatVar = "2.14";
"int_32Var" = 99;
"resource_uri" = "/test";
stringVar = "Just resting.";
})
Object <TestObject: 0x7f9fad956680> (entity: <null>; id: 0xd000000000040002 <x-coredata://C9D50E1B-46E9-4C11-96BE-622281232D5B/TestObject/p1> ; data: <fault>)
对象的地址似乎已从0x7f9fadab1bc0更改为0x7f9fad956680。
答案 0 :(得分:0)
更改日志记录样式。您对两个日志都有相同的消息。 可能有可能从代码中的其他位置调用updateObject的第二种方法。当你使用NSManagedContext时,最好放一些锁。