我有一個使用iCloud同步的項目,但它無法正常工作。首先,我得到一組更改的對象,然後將它們轉換爲CSV字符串(這將成爲雲中UIDocuments的內容),然後將它們上傳到iCLoud。如果我的對象少於400個,則一切正常,但是如果我有更多 - 應用程序掛起。用於iCloud的大量UID文檔
我試過使用本地autorelease池,我已經把大數組拆分成小數組。但它沒有幫助。
上傳大量UID文件到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和本地自動釋放池來實現。 –
我能想到的另一個原因是用於後臺處理(即保存)的隊列可以用所有對象這可能會導致崩潰。您可以嘗試使用自己的串行隊列重新實現保存代碼。 – Eimantas