Xcode 5.02 및 iOS 7.04를 사용하고 있으며이 성가신 버그를 해결하기 위해 오랫동안 열심히 검색을 해왔으며 여러 시간 동안 디버깅을 한 후에도 여전히이 버그를 해결할 수 없습니다. 해제 된 인스턴스에 보낸 메시지 VERY WEIRD ERROR
그래서 나는 내보기 컨트롤러에서+ (void)openDocument:(NSArray *)documentData {
NSString *documentName = documentData[0];
CompletionBlock completionBlock = documentData[1];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *documentsDirectory = [[fileManager URLsForDirectory:NSDocumentDirectory
inDomains:NSUserDomainMask] lastObject];
NSURL *url = [documentsDirectory URLByAppendingPathComponent:documentName];
UIManagedDocument *document = [[UIManagedDocument alloc] initWithFileURL:url];
void (^OnDocumentDidLoad)(BOOL) = ^(BOOL success) {
completionBlock(document);
preparingDocument = NO;
};
if(!preparingDocument){
preparingDocument = YES;
if(!([fileManager fileExistsAtPath:[url path]])){
[document saveToURL:document.fileURL forSaveOperation:UIDocumentSaveForCreating
completionHandler:OnDocumentDidLoad];
} else if(document.documentState == UIDocumentStateClosed){
[document openWithCompletionHandler:OnDocumentDidLoad];
} else if (document.documentState == UIDocumentStateNormal) {
OnDocumentDidLoad(YES);
}
} else {
//Try till Document is Ready
[self performSelector:@selector(openDocument:)
withObject:documentData
afterDelay:0.5];
}
}
, 내 ManagedObjectContext에 액세스하기 위해이 헬퍼 클래스를 사용하여 내 데이터를 검색하기 위해 UIManagedDocument 도우미 클래스를 사용하고
- (void)updateContext{
[DocumentHelper openDocument:@[DOCUMENT_NAME, ^(UIManagedDocument *document) {
self.managedObjectContext = document.managedObjectContext;
}]];
}
이 updateContext 메소드는 일반적으로 새 항목 추가 또는 삭제와 같이 CoreData를 업데이트 할 때 호출되지만이 메서드는 (void) viewWillAppear 메서드 및 응용 프로그램이 포어 그라운드에있을 때 알림 블록에서도 호출됩니다 (Applic 사용 ATION 위임)
나는 배경에 응용 프로그램을 넣어 응용 프로그램을 다시 열 때마다, 응용 프로그램이 충돌에 상관없이이 버그가 똑딱 어떤지
*** -[UIManagedDocument _setInConflict:]: message sent to deallocated instance 0x1701b0ae0
내가 malloc을하고 NSZombie 프로필 관리자를 사용하는 말 없지만, 시한 폭탄. 이 오류는 응용 프로그램을 닫았다가 다시 열 때 임의의 횟수만큼 발생합니다.
바로 ARC 코드입니까? 당신이 당신의 속성을 정의하는 방법을 보여줄 수 있습니까? –
예 ARC 코드입니다. @property (비 원자력, 강함) NSManagedObjectContext * managedObjectContext; – liquidfired
Xcode 5.0.2 및 iOS 7.0.4를 사용하고 있습니까? –