0
我有一個NSManagedObject。在某些情況下,當我訪問塊中的對象時,它會使用不同的指針發生故障,並且在訪問對象的變量時出現EXC_BAD_ACCESS崩潰。NSManagedObject更改塊的參考
下面是一個簡化的代碼:
+(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。
- ,當我把在[doSomethingWith:對象]一個破發點並運行「寶 0x7f9fadab1bc0」我得到的輸出作爲第一個日誌條目相同。
- 對象didTurnIntoFault在兩個日誌語句的打印之間未觸發。
- 此方法也在測試中運行,當我單獨運行測試時,它會通過。當我在XCTestCase中與其他3個測試一起運行時,它會失敗。作爲拆除Core Data數據存儲的一部分。但是在測試運行期間不會調用此方法(通過斷點驗證)