백그라운드 프로세스에서 서버에서 여러 파일을 다운로드해야합니다. 여기는 NSOperationQueue
입니다. 다운로드가 진행되는 동안 다운로드가 시작되면 유지해야합니다. &가 완료되었습니다. 이를 위해 핵심 데이터를 사용하고 있습니다. 다음 접근법을 사용했습니다. 각 파일에 해당하는 NSManagedObject
이 있습니다. 다운로드 내가 NSOperationQueue를 사용하여 NSOpeartion을 동 기적으로 실행
NSOperationQueue
에 추가됩니다 통과 각 파일에 대해 생성되는 "시작"으로 핵심 데이터 파일의 상태를 저장 시작입니다 그래서 전에
- .
- 그러면
NSOperation
하위 클래스의 main() 메서드에서 실제 파일 다운로드를 수행합니다. - 다운로드가 완료되면 코어 데이터의 fiel 상태를 "Completed"로 저장합니다.
이 하나의 파일에 대해 잘 작동합니다. 그러나 여러 파일에 대해 1 단계에서 4 단계의 for 루프를 실행합니다. 루프 에 대한이 내가
for(NSManagedObject *objToDownload in objectArr){
NSManagedObjectContext *ctx = [[NSManagedObjectContext alloc] init];
[ctx setPersistentStoreCoordinator: [[[UIApplication sharedApplication] delegate] persistentStoreCoordinator]];
offlineManagerObj = [[OfflineFileManager alloc]initWithManagedObj:objToDownload delegate:self tempOfflineAccessPath:[objToDownload valueForKey:@"path"] objContext:ctx];
[queue setMaxConcurrentOperationCount:1];
[queue addOperation:offlineManagerObj];
[ctx release];
}
나는 충돌 심지어 NSZombieEnabled
을 설정하려고
#0 0x31b6b4b0 in ___forwarding___()
#1 0x31ae2180 in __forwarding_prep_0___()
#2 0x363b904e in -[_PFArray dealloc]()
#3 0x363b6b80 in -[_PFArray release]()
#4 0x31acd1a0 in CFRelease()
#5 0x31acfeba in _CFAutoreleasePoolPop()
#6 0x310ae1ca in -[NSAutoreleasePool release]()
#7 0x370bff0e in _UIApplicationHandleEvent()
#8 0x35bc0e76 in PurpleEventCallback()
#9 0x31b3fa96 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__()
#10 0x31b4183e in __CFRunLoopDoSource1()
#11 0x31b4260c in __CFRunLoopRun()
#12 0x31ad2ec2 in CFRunLoopRunSpecific()
#13 0x31ad2dca in CFRunLoopRunInMode()
#14 0x35bc041e in GSEventRunModal()
#15 0x35bc04ca in GSEventRun()
#16 0x370ead68 in -[UIApplication _run]()
#17 0x370e8806 in UIApplicationMain()
#18 0x00002482 in main (argc=1, argv=0x2fdff494) at /Projects/iOS_Universal/main.m:14
로그하지만 너무 didnt가 도움이 다음있어 그것을 호출하는 방법이기 이 NSMangedObject
두 번째 반복에 대한 NSOperation
서브 클래스에 전달 파괴 어떤 객체가 넘쳐나는지 얻기 위해서
다운로드 상태를 추적하기 위해 핵심 데이터가 필요하지 않습니다. NSOperation의'execution'과'finished' 플래그를 체크하십시오. – Jano
하지만 나도 다운로드해야하는 파일에 대해 NSMangedObject를 전달해야합니다. 기본적으로 그 객체는 파괴되고 있습니다. – Ritika