iCloud 동기화가있는 프로젝트가 있지만 올바르게 작동하지 않습니다. 처음에는 변경된 객체 배열을 얻은 다음 CSV 문자열 (클라우드의 UIDocuments 내용이 될 것임)로 변환 한 다음이를 iCLoud에 업로드합니다. 400 개 미만의 개체가있는 경우 모든 항목이 정상이지만 더 많은 정보가 있으면 응용 프로그램이 중지됩니다.iCloud 용 UIDocuments의 큰 배열
로컬 autorelease 풀을 사용해 보았습니다. 큰 배열을 작은 배열로 분할했습니다. 그러나 도움이되지 않았습니다.
많은 UIDocument를 iCloud에 업로드하는 가장 좋은 방법은 무엇입니까? 내 업로드 방법 : 내 영어 사전과 유감의
- (void)pushChangesToCloud:(NSArray *)changedObjects {
for (ObjectClass *someObject in changedObjects) {
NSURL *pathToSyncDoc = [[self urlForDocumentsFolderIniCloud] URLByAppendingPathComponent:someObject.name];
CustomUIDocument *syncDoc = [[[CustomUIDocument alloc] initWithFileURL:pathToSyncDoc] autorelease];
// converting object to CSV string
NSString *csvContents = [SomeClass convertObjectToCSV:someObject];
syncDoc.documentContent = csvContents;
[syncDoc saveToURL:[syncDoc fileURL]
forSaveOperation:UIDocumentSaveForCreating
completionHandler:^(BOOL success) {
if (success) {
NSLog(@"YAY!");
} else {
NSLog(@" D: ");
}
}];
}
}
감사합니다.
당신은'retain' /'release'와 수동 메모리 관리를 시도? – Eimantas
@Eimantas, 대답 해줘서 고마워. 예, 원래이 방법으로 수행되었습니다. 하지만 많은 양의 데이터가있는 버그가 발생하면 autorelease 및 로컬 autorelease 풀을 사용하여 구현해야한다고 결정했습니다. –
내가 생각할 수있는 또 다른 원인은 백그라운드 처리 (예 : 저장)에 사용 된 큐가 모든 개체와 그것은 충돌을 일으킬 수 있습니다. 자신의 시리얼 큐를 사용하여 저장 코드를 다시 구현할 수 있습니다. – Eimantas