GCD에서 자주 사용하는 함수
주 스레드가 막히는 문제를 해결하기 위해서, 이 시간을 소모하는 임무를 다른 스레드에 맡겨 처리할 수 있다
CPU 싱글 코어 시대에 멀티스레드 기술을 사용하여 동시 처리를 할 수 있다. GCD는 비동기적인 방법으로 멀티 코어 CPU를 위한 동시 처리 기술이다.
URL을 통해 UIImage 대상을 직접 만들 수 없습니다. NSData 대상을 구축해야 합니다. URL에서 요청한 바이너리 데이터 대상이고, UIImage 대상을 만들고 UIImage 대상을 UIImageView의 이미지 속성에 값을 부여해야 합니다.
NSThread 는 다중 스레드 클래스이지만, 스레드 생성, 스레드 통신, 스레드 폐기 등 우리가 스레드를 관리해야 하기 때문에 매우 번거롭다
GCD는 C 언어 수준의 API로 C 함수를 제공합니다.GCD 코드는 간단하며 멀티 코어 CPU 처리를 지원합니다.
GCD에서 매우 중요한 개념은 발송 대기열이다. 발송 대기열은 하나의 대상이다. 이것은 임무를 받아들일 수 있고 임무를 먼저 집행하는 순서로 집행할 수 있다. 발송 대기열은 병렬적이거나 직렬적일 수 있다.동시 대기열은 한 번에 하나의 작업만 수행할 수 있는 여러 작업을 동시에 수행할 수 있습니다.
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
self.imageView.image = nil;
NSURL *imgURL = [NSURL URLWithString:@"http://www.baidu.com..."];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSData *imgData = [NSData dataWithContentsOfURL:imgURL];
UIImage *img = [UIImage imageWithData:imgData];
dispatch_async(dispatch_get_main_queue(), ^{
self.imageView.image = img;
});
});
}
위 코드에서 dispatchasync 함수는 비동기적으로 작업을 수행하는 데 사용되지만, 직렬 대기열에서 동기화됩니다.
dispatch_async(dispatch_get_main_queue(), ^{
self.imageView.image = img;
});
위 코드는 홈 팀 열에서 UI 업데이트
iOS의 일반적인 지연 시간은
[self performSelector:@selector( ) withObject:( ) afterDelay:2.0];
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"Start");
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(/* */ *NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
//
});
}
GCD는 딜레이를 하는 것이 매우 편리하고 유연하다. 딜레이를 할 때 다시 메인 라인으로 돌아가 일을 할 수도 있고 딜레이를 할 수도 있다.
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
//
});
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.