2014-06-15 1 views
0

내 iDevice에서는 볼 수 있지만 내 Mac에서는 볼 수없는 문제를 해결하려고합니다 (분명히). 나는이 라인에서 매우 높은 CPU 활동을 표시 한`dataWithData` + non-blocking 스레드로 CPU 사용률이 높음

는 :

data = [NSData dataWithData:UIImageJPEGRepresentation(image, 1.0)]; 

이것은 내가 다운로드하여 HD 사진 (4-5Mo)를 표시하고있을 때 나타납니다.

내 코드에 이상이 있거나 잘못된 것을하고 있습니까?

편집 마침내이 줄은 그다지 중요하지 않았습니다. 내 문제는 내 asynchrone 메서드는 다른 스레드에 있다고 생각했다. 그렇지 않았습니다. 나는 새로운 스레드에 대해 생각하기 시작

: 내 문제에 대한

[NSThread detachNewThreadSelector:@selector(test:) toTarget:self withObject:myObject]; 

, 그것을 할 수있는 가장 좋은 방법은?

도움 주셔서 감사합니다.

답변

0

here은 아이들과 함께 NSManagedObjectContext을 사용하는 비 차단 스레드의 문제점을 잘 설명합니다.

다른 문제 (높은 CPU 활동)는이 비 차단 스레드 문제 때문이었습니다.

0

기본적으로 CPU 집중 작업은 응용 프로그램에서 사용자 상호 작용을 차단하지 않도록 백그라운드 스레드에서 수행해야합니다. 희망을 돌보고 있습니다.

또한 이미지 생성/조작과 관련된 프로세스가 CPU 집중적 인 경향이 있습니다.

+0

모든 것이 백그라운드에 있지만 분명히이 작업이 수행되는 시간에 대해 두려워합니다. 이 작업의 평균 지속 시간에 대해서는 전혀 알지 못합니다. 그것에 대해 약간의 언급이 있습니까? 사진의 크기/해상도에 따라 치료 기간을 계산하는 수학적 기능이있을 수 있습니까? 기간을 예측할 수 있다면 필요한 경우 그림의 크기를 조정할 수 있습니다. – BriceB

+0

당신은 이것을 과장 생각하고 있습니다. JPEG 압축은 CPU를 많이 사용합니다. GCD를 사용하여 백그라운드에서 작업을 수행하면 UI가 차단되지 않습니다. 그냥 실행하자. –

+0

내 문제의 일부를 발견했습니다. 나는 asynchrone 다운로드가 다른 스레드에 있었지만 마침내 그렇지 않다고 생각했다. 나는'NSThread'' detachNewThreadSelector : toTarget : withObject :'와 함께 그것을 시도했지만 그것을 막을 수는 없습니다. 즉, 내 방법을 호출 할 때마다 새 누출이 있음을 의미합니다. – BriceB