일부 최근의 (관련없는 것으로 보이는) 변경 사항이 적용될 때까지 제대로 작동하는 일부 핵심 데이터 기능이 있습니다. 이제 특정 NSManagedObject 하위 클래스 인스턴스에 속한 모든 특성이 갑자기 nil을 반환하는 문제가 발생합니다.코어 데이터 속성이 nil (ARC 관련)으로 변경됩니다.
내 NSManagedObject 하위 클래스가 Foo이고 value라는 속성이 하나만 있다고 가정 해 보겠습니다. 가치가 어떻게 든 제로가되었다는 것을 깨닫게되면 다음 범주를 설정하여 가치 변화를 모니터링하십시오.
@implementation Foo (Debug)
- (void)setValue:(NSDate *)value
{
[self willChangeValueForKey:@"value"];
[self setPrimitiveValue:value forKey:@"value"];
[self didChangeValueForKey:@"value"];
}
- (NSDate *)value
{
[self willAccessValueForKey:@"value"];
NSDate *value = [self primitiveValueForKey:@"value"];
[self didAccessValueForKey:@"value"];
return value;
}
@end
setValue : 내 개체에 대해 호출되며 전달 된 인수는 NSDate가 아닌 숫자입니다. 그런 다음 값이 검색됩니다 (다른 메소드에서). 지정된 동일한 값이 올 Y 르게 검색됩니다.
그러나 다른 메서드가 값을 읽으려고하면 값 접근자가 호출되고 primitiveValueForKey :에 의해 nil 값이 반환됩니다.
두 개의 읽기 사이에 setValue :가 호출되지 않고 Foo 객체 자체가 유효합니다 (nil이 아님). 사실, 다른 Core Data 연산은 모든 Core Data 객체 또는 전체 컨텍스트에 대한 두 가지 읽기간에 수행되지 않습니다.
우리 프로젝트에서 ARC를 사용하고 있습니다. ARC가 내 Core Data 변수를 어지럽히고 할당 해제 할 수 있습니까? 그렇다면 누구나 ARC 할당 해제 디버깅에 대한 제안이 있습니까? 또는 ARC가 내 변수를 할당 해제하지 못하도록하는 방법을 아는 사람이 있는지 여부가 더 좋습니다.
이것은 ARC와 관련이 없을 수도 있습니다. 그러나 무슨 일이 벌어지고 있는지에 관해서는 약간의 상실감이 있습니다. 어떤 제안이라도 대단히 감사 할 것입니다.
ARC는 아직 NDA하에 있으므로 Apple의 제한 포럼 외부에서 논의 할 수 없습니다. – TechZen
[ARC는 NDA에 속하지 않습니다.] (http://lists.cs.uiuc.edu/pipermail/cfe-dev/2011-June/015588.html) –
두 개의 서로 다른 두 개의 스레드에서 작업 할 가능성이 있습니다 그 대상의 사본들? 그렇지 않으면이 객체와 정확히 일치합니까? 두 개 만들지 않았다고? 또는 컨텍스트를 재설정하지 않았거나 변경 사항을 잃어 버리지 않았습니까? –