디스패치큐 사용시 주의사항 반드시 메인큐에서 처리해야 하는 작업 2.Sync 메서드에 대한 주의 사항 3.Weak, strong 캡쳐주의 컴플리션 핸들러의 존재이유 동기적 함수를 비동기 함수로 만드는 방법 중요한 개념 : ui 관련작업은 메인큐에서 처리해야 한다 비동기로 작업을 보내다가 ui작업은 메인 뷰로 보내서 처리해야 한다 코드 예시 urlsession 도 내부적으로 비동기 처리 로직으로 작동한다. 비동기 작업 완료 후 ui 처리 작업은 메인 스레드로 보내서 처리하는 예 실제앱에서는 ui 작업이 메인큐에서 작동하고 플레이 그라운드에서는 global 큐에서 작동 한다. 2)sync 메서드에 대한 주의 사항 sync 메소드와 관련해 절대 해서는 안되는 코드 2가지 코드예시 이유는 2)현재의 큐에서 현재..
1.메인큐 2.글로벌 큐와 qos 3.프라이빗 큐 -큐의 종류 다양한 큐가 존재한다 대기열(큐) 마다 특성이 달라서 특성에 맞게 작업을 할당해주면 된다. 큐의 종류별로 스레드가 존재해서 알아서 큐가 작업을 스레드로 보내준다 -메인큐에 대하여 코드 예시 - 글로벌큐 글로벌 큐는 병렬로(동시)처리된다 글로벌 큐의 서비스 품질 특성 백그라운드 큐를 생성 후 닷 유틸리티큐를 생성해서 작업을 할당했다면 성능은 유틸리티 성능이된다. 코드 예시 - 프라이빗 큐 프라이빗큐 디폴트 성질은 직렬처리다.( 옵션으로 동시성 처리도 가능) 코드예시 코드로 구현 정리
큐의 종류 큐의 종류에는 직렬큐와 동시성 큐가 있다. -직렬큐 -동시성큐 몇 개의 스레드로 분산해서 처리할지는 시스템이 결정한다. 다만 큐에만 넣어주면 여러개의 스레드로 처리해준다. 한문장으로 정리 언제쓰나? 동시큐 사용 예) 동기와 비동기 의미
위 화면에서 스크롤 할때 화면이 왜 버벅일까? 아이폰 화면은 16밀리 세컨에 한번씩 갱신된다. 하나의 셀을 구성하기 위해서 여러 작업들이 일어나는데 그 작업들의 처리량이 많기 때문이다. 즉 일이 많다. xcode에서 보면 스레드 하나만 작동되는것을 볼수 있다. 하나의 셀에서 많은 양을 처리하는 과정이다 실생활예시로 여러개의 복사기가 있는데 하나의 복사기만 사용하는것과 같다. 그럼 어떻게 많은 양의 작업을 동시에 처리해서 안 버벅이게 할수 있을까? 대기열에 작업을 넣어주기만 하면 된다. 즉 큐에 디스치 해주면된다. 그럼 시스템이 알아서 큐에서 작업을 빼서 스레드에 할당해준다. 우리가 할일은 작업을 큐로 보내는것! GCD 와 OPERATION 어떻게 코드로 구현 할까? 코드 구현 2 한 작업 단위란 클로저 ..
iOS NSStream 이용한 채팅앱 예제 ✅ iOS 네이티브 소스 SocketSessionViewController.h #import @interface SocketSessionViewController : UIViewController @end SocketSessionViewController.m #import "SocketSessionViewController.h" @interface SocketSessionViewController () //텍스트 필드 @property (weak, nonatomic) IBOutlet UITextField *idTextField; @property (weak, nonatomic) IBOutlet UIView *sessionView; @property (strong..
iOS UIBezierPath 예제 - 그림 그리기 선분 그리기 MyView.h #import NS_ASSUME_NONNULL_BEGIN @interface MyView : UIView @end NS_ASSUME_NONNULL_END MyView.m #import "MyView.h" @implementation MyView - (void)drawRect:(CGRect)rect { // Drawing code NSLog(@"drawRect 호출됨."); //1.UIBezierPath 객체 생성 UIBezierPath *path = [[UIBezierPath alloc]init]; //2.UIBezierPath 객체관련 속성 설정 path.lineWidth = 4; path.lineJoinStyle = kC..