어떻게하면 CPU 100 %를 얻고 백그라운드 스레드에서 주 스레드를 차단할 수 있습니까? 나는 그런 식으로 작업을 수행합니다코어 데이터 작업에서 CPU 100 %
-(void)setContext:(NSManagedObjectContext *)context {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
_context = context;
});
}
가 그럼 난 NSURLConnectionDataDelegate
를 사용하여 일부 데이터를 다운로드 한 다음 삽입 내 방법 :
-(void)connectionDidFinishWithObject:(NSArray*)arrayOfObjects {
dispatch_queue_t fetchQ = dispatch_queue_create("myDispatch", NULL);
dispatch_async(fetchQ, ^{
[self.context performBlock:^{
for(NSDictionary *dic in myArr) {
[Tournament tournamentWithDictionary:dic inMOC:self.context];
}
}];
}
}
을 그리고 여기
은 첫째로 내가 정의 세터의 컨텍스트를 만들 내 삽입물 NSManagedObject
하위 클래스 :
+(Tournament*)tournamentWithDictionary:(NSDictionary*)dictionary inMOC:(NSManagedObjectContext*)moc {
Tournament *finalElement;
if(!finalElement) {
finalElement = [NSEntityDescription insertNewObjectForEntityForName:@"Tournament" inManagedObjectContext:moc];
[finalElement setTournamentID:[NSNumber numberWithInt:[[dictionary objectForKey:@"ID"] integerValue]]];
}
return finalElement;
}
그리고 100 % CPU 사용량을 얻었고 인터페이스가 차단되었습니다! 왜?!
메인 저장소와 영구 저장소를 공유하고 있습니까? – Tommy